これを読んでハローワールドしたかった(できなかった)
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.