Tra*_*mas 6 ubuntu java upgrade
我在更新 Java 时遇到问题。我正在运行 Ubuntu 11.10。
我可以执行sudo apt-get install openjdk-7-jdk并成功完成。javac -version是 1.7,但是java -version是 1.6。这与此问题类似,但据我所知,我的问题不是路径。
$ echo $PATH
/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
Run Code Online (Sandbox Code Playgroud)
谢谢。
更新:
找到一个解释得很好的网站:LINK
从链接:
然后我们要做一些配置。
Debian 有一个脚本来维护不同版本的程序,例如java调用update-alternatives.
更新替代方案 --install /usr/bin/java java /usr/lib/jvm/jdk1.7.0/bin/java 1065 更新替代方案 --install /usr/bin/javac javac /usr/lib/jvm/jdk1.7.0/bin/javac 1065
其中 1065 是给定的优先级。
要检查我的安装,我使用
打印的–config参数
update-alternatives --config java
:
There are 2 choices for the alternative java (providing /usr/bin/java).
选择路径优先状态 -------------------------------------------------- ---------- * 0 /usr/lib/jvm/jdk1.7.0/bin/java 1065 自动模式 1 /usr/lib/jvm/java-6-openjdk/jre/bin/java 1061手动模式 2 /usr/lib/jvm/jdk1.7.0/bin/java 1065手动模式
并且因为 1065 高于 1061,所以我的机器java -version
打印默认使用新安装的 java 7
:
Java 版本“1.7.0” Java(TM) SE 运行时环境(构建 1.7.0-b147) Java HotSpot(TM) 64 位服务器 VM(构建 21.0-b17,混合模式)
注意: 这可能会使它更容易理解。
SLES11 # 哪个 java /usr/bin/java SLES11 # 更新替代品 --list java /usr/lib64/jvm/jre-1.6.0-ibm/bin/java SLES11 # 更新替代品 --display java java - 状态是自动的。 链接当前指向 /usr/lib64/jvm/jre-1.6.0-ibm/bin/java /usr/lib64/jvm/jre-1.6.0-ibm/bin/java - 优先级 1608 从 rmiregistry:/usr/lib64/jvm/jre-1.6.0-ibm/bin/rmiregistry 从属 tnameserv:/usr/lib64/jvm/jre-1.6.0-ibm/bin/tnameserv 从 rmid:/usr/lib64/jvm/jre-1.6.0-ibm/bin/rmid 从站 jre_exports:/usr/lib64/jvm-exports/jre-1.6.0-ibm 从属策略工具:/usr/lib64/jvm/jre-1.6.0-ibm/bin/policytool 从密钥工具:/usr/lib64/jvm/jre-1.6.0-ibm/bin/keytool 从jre:/usr/lib64/jvm/jre-1.6.0-ibm 当前“最佳”版本是 /usr/lib64/jvm/jre-1.6.0-ibm/bin/java。
手册页给出了 update-alternatives 用于其目录的路径。
SLES11#密码 /etc/替代品 SLES11 # ll lrwxrwxrwx 1 root root 37 Mar 19 06:03 java -> /usr/lib64/jvm/jre-1.6.0-ibm/bin/java lrwxrwxrwx 1 root root 28 Mar 19 06:03 jre -> /usr/lib64/jvm/jre-1.6.0-ibm lrwxrwxrwx 1 root root 28 Mar 19 06:03 jre_1.6.0 -> /usr/lib64/jvm/jre-1.6.0-ibm lrwxrwxrwx 1 root root 36 Mar 19 06:03 jre_1.6.0_exports -> /usr/lib64/jvm-exports/jre-1.6.0-ibm lrwxrwxrwx 1 root root 36 Mar 19 06:03 jre_exports -> /usr/lib64/jvm-exports/jre-1.6.0-ibm lrwxrwxrwx 1 root root 28 Mar 19 06:03 jre_ibm -> /usr/lib64/jvm/jre-1.6.0-ibm lrwxrwxrwx 1 root root 36 Mar 19 06:03 jre_ibm_exports -> /usr/lib64/jvm-exports/jre-1.6.0-ibm
如果您已经安装了它们并且只需要更改默认值,则进行更改。
SLES11 # 更新替代品 --config java 只有 1 个程序提供了 java (/usr/lib64/jvm/jre-1.6.0-ibm/bin/java)。没什么可配置的。
原答案:
如果您查看/etc/java或类似的内容,/etc/java-7-openjdk您应该会看到配置文件。
java.conf或者jvm.cfg
这通常(取决于)在配置文件中设置您的选项。您可以同时安装多个版本的 java 并更改启动变量以影响哪个是您的默认 JVM。
来自 CentOS java.conf
# 如果你安装了一个基本的 JRE 包 #(例如java-1.6.0-openjdk): #JAVA_HOME=$JVM_ROOT/jre # 如果你已经安装了一个开发的 JDK 包 #(例如java-1.6.0-openjdk-devel): #JAVA_HOME=$JVM_ROOT/java
来自 Ubuntu jvm.cfg
# 可用作java、javac等选项的JVM列表。 # 顺序很重要——这个列表中的第一个是默认的 JVM。 # 请注意,此文件及其格式均不受支持且 # 将在未来版本中消失。 # # 你也可以在任意位置选择一个JVM # "-XXaltjvm=" 选项,但也不支持 # 并且可能在未来版本中不可用。 # -服务器已知 -客户端忽略 -热点错误 -经典警告 -本机错误 -绿色错误 -jamvm 已知 -可可知道 -零已知 -shark ALIASED_TO -零
在 Ubuntu 上有一个程序叫做update-java-alternatives
这是手册页的前几行
姓名
update-java-alternatives - jre/sdk 安装的更新替代品
概要
更新java-alternatives [--jre] [--plugin] [-t|--test|-v|--verbose]
-l|--list []
-s|--set
-a|--自动
-h|-?|--help
描述
update-java-alternatives 更新属于 Java 语言的一个运行时或开发工具包的所有替代品。一个包确实提供了这些
它的替代信息在 /usr/lib/jvm/..jinfo 中。
root@ubuntul:/# update-java-alternatives -l java-1.6.0-openjdk 1061 /usr/lib/jvm/java-1.6.0-openjdk
-s|--set
将注册的jre/sdk安装的所有备选设置为安装提供的程序路径。
我通常还会看到/etc/profile.djava 启动环境中的链接。
我的猜测是你的 java 库安装在同一个地方,配置文件仍然默认为原始版本。您应该只需要提供新的 JVM 路径。
| 归档时间: |
|
| 查看次数: |
33648 次 |
| 最近记录: |