在 Ubuntu 14.04 上安装 Android Studio 时,我收到消息说我的 Java 版本 ( javac 1.7.0_79
) 导致问题。我发现解决方案如何安装较新版本的 Oracle Java:
sudo apt-add-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer
但是我担心这可能会覆盖我现有的open-jdk
Java 版本。由于我不知道哪些程序依赖于 Java,我担心这可能会导致其他程序崩溃。
有没有办法确保apt-get
不会覆盖我以前的 Java?我基本上希望同时安装两者,并能够根据需要手动在它们之间切换。
答案1
Apt-get 不会覆盖现有的 java 版本。
要在已安装的 Java 版本之间切换,请使用update-java-alternatives
命令。
列出所有 Java 版本:
update-java-alternatives --list
将 Java 版本设置为默认版本(需要 root 权限):
sudo update-java-alternatives --set /path/to/java/version
...其中/path/to/java/version
是上一个命令列出的之一(例如/usr/lib/jvm/java-7-openjdk-amd64
)。
附加信息:
update-java-alternatives
是一个使用 Debian 的替代系统(update-alternatives
)设置一组指向指定 Java 版本的链接(例如java
,,javac
...)。
答案2
使用
sudo update-alternatives --config java
列出了所有已安装的版本,其中标记了当前活动的版本,并提供了切换对话框:
There are 3 choices for the alternative java (providing /usr/bin/java).
Selection Path...
------------------------------------------------------------
0 /usr/lib/jvm/java-9-oracle/bin/java...
* 1 /usr/lib/jvm/java-7-oracle/jre/bin/java...
2 /usr/lib/jvm/java-8-oracle/jre/bin/java...
3 /usr/lib/jvm/java-9-oracle/bin/java...
Press <enter> to keep...[*], or type selection number:
使用
export JAVA_HOME="$(jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));')"
$JAVA_HOME
从当前活动版本 设置
答案3
配置 Java
您可以使用 配置在命令行中默认使用的版本update-alternatives
,它管理用于不同命令的符号链接。
sudo update-alternatives --config java
输出将类似于以下内容。
There are 5 choices for the alternative java (providing /usr/bin/java).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 auto mode
1 /usr/lib/jvm/java-6-oracle/jre/bin/java 1 manual mode
2 /usr/lib/jvm/java-7-oracle/jre/bin/java 2 manual mode
3 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 manual mode
4 /usr/lib/jvm/java-8-oracle/jre/bin/java 3 manual mode
5 /usr/lib/jvm/java-9-oracle/bin/java 4 manual mode
Press <enter> to keep the current choice[*], or type selection number:
现在,您可以选择要用作默认值的数字。 也可以对其他 Java 命令执行此操作,例如编译器 ( javac
)、文档生成器 ( javadoc
)、JAR 签名工具 ( jarsigner
) 等。 您可以使用以下命令,填写命令您想要定制的。
sudo update-alternatives --config command
设置JAVA_HOME
环境变量
许多程序(例如 Java 服务器)使用 JAVA_HOME 环境变量来确定 Java 安装位置。
从您首选的安装中复制路径,然后使用 Sublime Text 或您最喜欢的文本编辑器打开 /etc/environment。
sudo subl /etc/environment
在此文件的末尾,添加以下行,确保用您自己复制的路径替换突出显示的路径。
JAVA_HOME="/usr/lib/jvm/java-8-oracle"
保存并退出文件,然后重新加载:source /etc/environment
。
现在您可以通过执行以下命令来测试环境变量是否已设置:echo $JAVA_HOME
。这将返回您刚刚设置的路径。
答案4
galternatives
还可以考虑使用ubuntu 包管理器提供的GUI 工具。