update-java-alternatives vs update-alternatives –config 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 

但是当我运行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 

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

sudo update-alternatives --config java

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

sudo update-alternatives --config javac

配置默认的Java编译器。

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

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

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

因此,您似乎还需要安装openjdk-7-jdk软件包。 看起来你只安装了openjdk-7-jre

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

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

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

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

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

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您必须使用与目录同名的隐藏文件,但前缀为a。 (点)。

希望这可以帮助。

参考书目

 man -S 8 update-java-alternatives 

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

https://stackoverflow.com/questions/6477415/how-to-set-oracles-java-as-the-default-java-in-ubuntu