どういうわけか、Ubuntu 16.04システムでOpenJdk 8の2つのディレクトリができました。
/usr/lib/jvm/Java-8-openjdk-AMD64
/usr/lib/jvm/Java-1.8.0-openjdk-AMD64
問題は、最初のディレクトリが壊れているように見えることです。既存の/usr/lib/jvm/Java-8-openjdk-AMD64/bin/Java HelloWorld
ファイルに対してHelloWorld.class
を実行すると、何も得られませんが、/usr/lib/jvm/Java-1.8.0-openjdk-AMD64/bin/Java HelloWorld
を実行すると、期待される出力が生成されます。
これを見てください:
core$ ll /etc/alternatives/jav*
lrwxrwxrwx 1 root root 42 Nov 7 11:02 /etc/alternatives/Java -> /usr/lib/jvm/Java-8-openjdk-AMD64/bin/Java*
lrwxrwxrwx 1 root root 52 Nov 2 19:32 /etc/alternatives/Java.1.gz -> /usr/lib/jvm/Java-9-openjdk-AMD64/man/man1/Java.1.gz
lrwxrwxrwx 1 root root 43 Nov 2 19:35 /etc/alternatives/javac -> /usr/lib/jvm/Java-8-openjdk-AMD64/bin/javac*
lrwxrwxrwx 1 root root 53 Nov 2 19:35 /etc/alternatives/javac.1.gz -> /usr/lib/jvm/Java-8-openjdk-AMD64/man/man1/javac.1.gz
lrwxrwxrwx 1 root root 45 Nov 2 19:35 /etc/alternatives/javadoc -> /usr/lib/jvm/Java-8-openjdk-AMD64/bin/javadoc*
lrwxrwxrwx 1 root root 55 Nov 2 19:35 /etc/alternatives/javadoc.1.gz -> /usr/lib/jvm/Java-8-openjdk-AMD64/man/man1/javadoc.1.gz
lrwxrwxrwx 1 root root 43 Nov 2 19:35 /etc/alternatives/javah -> /usr/lib/jvm/Java-8-openjdk-AMD64/bin/javah*
lrwxrwxrwx 1 root root 53 Nov 2 19:35 /etc/alternatives/javah.1.gz -> /usr/lib/jvm/Java-8-openjdk-AMD64/man/man1/javah.1.gz
lrwxrwxrwx 1 root root 43 Nov 2 19:35 /etc/alternatives/javap -> /usr/lib/jvm/Java-8-openjdk-AMD64/bin/javap*
lrwxrwxrwx 1 root root 53 Nov 2 19:35 /etc/alternatives/javap.1.gz -> /usr/lib/jvm/Java-8-openjdk-AMD64/man/man1/javap.1.gz
これらはすべて、プログラムの実行時に問題を引き起こしている8
ではなく、1.8
ディレクトリを指します。私の質問は、この混乱がどのようにして生じたのか、そしてこれを整理する最良の方法は何ですか?他のすべてを削除し、OpenJDK 8をデフォルトのJDKとして使用したいと思います。
わかりましたので、私の場合の問題は、無意識のうちにopenjdkもヘッドレスでインストールしていたため、2回のインストールになってしまったことです。最終的にすべてのjdkをシステムから削除し、JDK 9をインストールしました(これは問題のないインストールではないので、追加するかもしれません!)。
Javaバージョンを選択します。
Sudo update-alternatives --config Java
出力例:
There are 2 choices for the alternative Java (providing usr/bin/Java).
Selection Path Priority Status
------------------------------------------------------------
0 /usr/lib/jvm/Java-8-Oracle/jre/bin/Java 1081 auto mode
1 /usr/lib/jvm/Java-8-openjdk-AMD64/jre/bin/Java 1081 manual mode
* 2 /usr/lib/jvm/Java-8-Oracle/jre/bin/Java 1081 manual mode
Press <enter> to keep the current choice[*], or type selection number:
--list
オプションを使用して、Java
、javac
の代替を表示することもできます。
Sudo update-alternatives --list Java
Sudo update-alternatives --list javac