将 JDK 8 设置为 Debian 8 上的默认 Java

Edd*_*ett 12 linux debian java

我正在尝试将 Java SDK 8 工具(从 debian backports 存储库安装)设置为默认值。

# update-java-alternatives --list
java-1.7.0-openjdk-amd64 1071 /usr/lib/jvm/java-1.7.0-openjdk-amd64
java-1.8.0-openjdk-amd64 1069 /usr/lib/jvm/java-1.8.0-openjdk-amd64

# update-java-alternatives --set /usr/lib/jvm/java-1.8.0-openjdk-amd64
update-alternatives: error: no alternatives for mozilla-javaplugin.so
update-java-alternatives: plugin alternative does not exist: /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/IcedTeaPlugin.so
Run Code Online (Sandbox Code Playgroud)

嗯,除了那个错误(我认为这只是根据https://askubuntu.com/questions/141791/is-there-a-way-to-update-all-java-related-替代方案。如果没有,我不知道如何解决这个问题,因为我可以看到 jdk8 没有 icedtea 插件),这应该可以解决问题,对吧?

但是很多 Java 工具仍然指向 Java 7:

# update-alternatives --get-selections | grep java
appletviewer                   manual   /usr/lib/jvm/java-8-openjdk-amd64/bin/appletviewer
extcheck                       auto     /usr/lib/jvm/java-7-openjdk-amd64/bin/extcheck
idlj                           auto     /usr/lib/jvm/java-7-openjdk-amd64/bin/idlj
jar                            auto     /usr/lib/jvm/java-7-openjdk-amd64/bin/jar
jarsigner                      auto     /usr/lib/jvm/java-7-openjdk-amd64/bin/jarsigner
java                           manual   /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
javac                          auto     /usr/lib/jvm/java-7-openjdk-amd64/bin/javac
javadoc                        auto     /usr/lib/jvm/java-7-openjdk-amd64/bin/javadoc
...
Run Code Online (Sandbox Code Playgroud)

是什么赋予了?破碎的?

编辑:

解决了这个问题:

for i in `update-alternatives --get-selections | grep java | awk '{print $1}'`; do update-alternatives --config $i; done
Run Code Online (Sandbox Code Playgroud)

这将手动提示您输入每个工具。这大约需要一分钟。不过,我想知道是否有更好的方法。

hfs*_*hfs 12

update-java-alternatives有选择,更新--jre-headless--jre--plugin分别。

使用

sudo update-java-alternatives --jre-headless --jre --set java-1.8.0-openjdk-amd64
Run Code Online (Sandbox Code Playgroud)

在没有安装插件的 Debian Jessie 服务器上为我工作。


小智 7

在 Debian 中实现此目的的最简单方法是使用此命令

update-alternatives --config java
Run Code Online (Sandbox Code Playgroud)

然后你会得到这样的输出:

*0  /usr/lib/jvm/java-8-openjdk-amd64/bin/java  auto mode
 1  /usr/lib/jvm/jdk1.7.0/bin/java              manual mode
Run Code Online (Sandbox Code Playgroud)

然后,您可以通过键入索引号来更改默认选择(标有“*”)。例如,您选择“1”以使用 Java 7 作为默认 JVM。您可以再次运行该命令以检查更改。

希望能帮助到你。


小智 5

在 ubuntu 中,JDK1.8 默认不安装。当您列出 Java 替代品时

$ update-java-alternatives -l
java-1.11.0-openjdk-amd64      1101       /usr/lib/jvm/java-1.11.0-openjdk-amd64
java-1.8.0-openjdk-amd64       1081       /usr/lib/jvm/java-1.8.0-openjdk-amd64
java-7-oracle                  1082       /usr/lib/jvm/java-7-oracle
Run Code Online (Sandbox Code Playgroud)

java-1.8.0-openjdk-amd64在这个列表中不是 JDK,而是 JRE。JRE 不包含所有必需的开发工具,如 javac、javadoc 等。您可以验证 bin 目录是否包含这些文件。这就是没有注册这些工具的原因。

所以,首先你必须安装JDK

sudo apt install openjdk-8-jdk
Run Code Online (Sandbox Code Playgroud)

然后改变替代方案

sudo update-java-alternatives -s java-1.8.0-openjdk-amd64
Run Code Online (Sandbox Code Playgroud)


小智 0

您必须在下面的文件中更改 java 8 的 java home 变量

  'vi /etc/environment'
Run Code Online (Sandbox Code Playgroud)

在这种格式下

JAVA_HOME-/usr/lib/jvm/java-8-oracle

使用重新加载配置文件

'. /etc/environment'
Run Code Online (Sandbox Code Playgroud)

并以此确认

   echo  $JAVA_HOME
Run Code Online (Sandbox Code Playgroud)