web-dev-qa-db-ja.com

Java 8 vs Java 1.8インストール(ディレクトリ名)

どういうわけか、Ubuntu 16.04システムでOpenJdk 8の2つのディレクトリができました。

  1. /usr/lib/jvm/Java-8-openjdk-AMD64
  2. /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として使用したいと思います。

7
dotslash

わかりましたので、私の場合の問題は、無意識のうちにopenjdkもヘッドレスでインストールしていたため、2回のインストールになってしまったことです。最終的にすべてのjdkをシステムから削除し、JDK 9をインストールしました(これは問題のないインストールではないので、追加するかもしれません!)。

0
dotslash

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オプションを使用して、Javajavacの代替を表示することもできます。

Sudo update-alternatives --list Java
Sudo update-alternatives --list javac
2
Benny