update-java-alternatives vs update-alternatives --config java

Sta*_*ith 128 java

在 Ubuntu 12.04 LTS 上,我安装了 Sun 的 JDK7、Eclipse 和 Arduino IDE。我希望 Arduino 使用 OpenJDK 6,希望 Eclipse 使用 Sun 的 JDK 7。

根据我的理解,我需要在运行每个应用程序之前手动选择要使用的 Java。这让我找到了update-java-alternatives -l命令。当我运行它时,我只看到以下内容:

java-1.6.0-openjdk-amd64 1061 /usr/lib/jvm/java-1.6.0-openjdk-amd64
Run Code Online (Sandbox Code Playgroud)

但是当我运行时,update-alternatives --config java我看到以下内容:

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

我不明白为什么update-java-alternatives不显示相同的 3 个选项。我也不明白如何在 OpenJDK6 和 JDK7 之间切换。我如何使用 OpenJDK6 进行 Arduino 开发,使用 Sun JDK7 进行 Eclipse/Android 开发?

Ben*_*rer 171

sudo update-alternatives --config java

配置程序“java”的默认值。那就是Java VM。

sudo update-alternatives --config javac

配置默认的 Java 编译器。

您还可以看到,因为第一个命令列出了很多“JRE”(Java 运行时环境)文件夹,而该程序仅称为“java”。

如果我通过发出命令java -version 或 来 检查正在使用哪个版本 javac -version,我可以看到,每个命令都会更改正在使用的程序。

但是,使用update-java-alternativesJDK 版本更改我的两个程序。使用第一个命令,您可以使用来自不同 JDK 的 Java VM 和 Java 编译器。

update-java-alternatives 需要在目录 /usr/lib/jvm 中存在扩展名为 .jinfo 的文件。opendjk 包附带一个 .jinfo 文件,Oracle(以前称为 Sun)的 jdk 没有。作为替代方案,您可以在没有 update-java-alternatives 的情况下配置替代方案

例如,要从 jvm-directory /usr/lib/jvm/jdk-12.0.1(Oracle Debian 软件包的默认目录)中添加优先级为 2082 的java ,请使用以下命令:

sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk-12.0.1/bin/java 2082

至于不同开发环境的切换:

您是在谈论使用不同的 Java 版本启动 IDE 本身还是IDE 中使用不同的版本来编译和运行您的应用程序?

1:您可以指定JVM在的eclipse.ini使用的,如所描述这里。我不知道如何为 Arduino IDE 做到这一点。

对于 2.:在 Eclipse 中,您可以在 Window -> Preferences -> Java -> Installed JREs 中选择要使用的 JRE/JDK。在 Java -> Compiler 下,如果您愿意,您可以选择较旧的 Java 合规性。

编辑: 这个 DigitalOcean 页面对 Ubuntu 上与 Java 相关的所有内容也有很好的解释。


小智 25

update-java-alternatives是一个更新jre/jdk安装替代方案的程序。

update-alternatives 是 linux 的符号链接管理系统(我敢肯定这里没有什么消息)。

你可以和真的应该,同时使用update-java-alternativesupdate-alternatives在一起。

首先,确保正确配置了所有替代方案。java 和 javac 只是其中的几个。有javadocrmicserialver和其他人,取代上述变量:native2ascii/opt/jdk1.8.0_40/bin/native2ascii是否安装和/或选择的替代方案应当报告。

配置完所有备选方案后,您就可以创建/usr/lib/jvm手动安装的链接 。

为了进行配置,update-java-alternatives您必须使用与您的目录同名但以 . (点)。

希望这可以帮助。

参考书目

man -S 8 update-java-alternatives
Run Code Online (Sandbox Code Playgroud)

http://tech.lanesnotes.com/2008/03/using-alternatives-in-linux-to-use.html

/sf/ask/453419081/

  • 当我运行 `update-java-alternatives` 时,它会更新 /etc/alternatives 中的符号链接。所以你不需要同时运行。 (3认同)

Joã*_*ira 5

只是一个旁注(太大,无法发表评论)。如果您需要自动切换到 Java 8(编译器 1.8),例如对于脚本或持续集成测试套件,您可以运行

sudo update-java-alternatives -s $(sudo update-java-alternatives -l | grep '1\.8' | cut -d " " -f1) || echo '.'
Run Code Online (Sandbox Code Playgroud)

它将自动获取任何可用的 java 8 版本并使用命令进行设置update-java-alternatives

最后的|| echo '.'只是确保命令返回成功,因为奇怪的update-java-alternatives是默认情况下返回错误(1)。如果您的测试套件不需要它,您可以跳过它。