20210518

おれのjavaが動かなかった

タグ:hello! world.

これを読んでハローワールドしたかった(できなかった)

JDKインストールして
環境変数指定して
コード書いて、 javacでコンパイルして(クラスファイル作って)、 javaで実行→エラーでできなかった。

原因と思われるエラー

おれのエラー

Exception in thread “main” java.lang.UnsupportedClassVersionError: hello : Unsupported major.minor version 60.0

こういうエラーは、javacとjavaのバージョンが違ったときに出るらしい。
実際下記のようにバージョンを確かめるコマンドを打つと、javacとjavaのバージョンが違った。

>javac -version
javac 16.0.1

>java -version
java version “1.6.0_26”
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02, mixed mode)

16と1.6だそうです。違いますね。

さっき手動でインストールした(解凍したファイルを移動しただけ)〜\jdk-16.0.1\binには、16.0.1.0が入っている。
だから、16が正だ。

1.6 はどこから出てきたの?

原因の発見

コマンドラインで、where javaしたら原因が見つかった。
whereについてはこのサイト。
下記のように、コマンドラインでjavaっていったら、2つあるらしい。

>where java
C:\Windows\System32\java.exe
C:\pg\jdk-16.0.1\bin\java.exe

多分上の方を優先して使ってるんだと思う。

javacは一つみたい。

>where javac
C:\pg\jdk-16.0.1\bin\javac.exe

入れた覚えないんだけどな?
なんか変な依存関係があって、ある日突然正常に動かなくなったら嫌だな。

 対処

とりあえず、環境変数の
%JAVA_HOME%\binを
%SystemRoot%\system32よりも上に持ってきた。
上に書いてあるほど、前に書いてあって、優先されるようです。

下記のように、コマンドラインでjavaと入力したら、16が使えるようになった!

>where java
C:\pg\jdk-16.0.1\bin\java.exe
C:\Windows\System32\java.exe

>java -version
openjdk version “16.0.1” 2021-04-20
OpenJDK Runtime Environment (build 16.0.1+9-24)
OpenJDK 64-Bit Server VM (build 16.0.1+9-24, mixed mode, sharing)

…Androidアプリを作りたくて、Android Studioの勉強の前に、JDKでお勉強してるんだが…
JDKを導入して、環境変数変えたけど…
Android Studioのjava.exeとか、javac.exeとかに影響しないのかな…
java.exeも、javac.exeもどうやら、C:\Program Files\Android\Android Studio\jre\binに入っているらしいので、androis studioはそれを使っているんだろうか?
android studioは、コマンドラインでjavaと打って起動するjava(system32に入っているやつとか)を使ってないのかな?。そもそもsystem32にはいつ何で入ってたんだろう?

Hello worldできた。

>java hello
Hello.

タグ:hello! world.
posted by yuchan at 22:51 | Comment(0) | java
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: