安装openjdk-7-jdk不会更新java(仍然是1.6版本)

安装openjdk-7-jdk不会更新java(仍然是1.6版本)

我在更新 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

谢谢。

答案1

更新:

找到一个网站,有很好的解释:关联


从链接:

然后我们要做一些配置。
Debian 有一个脚本来维护不同版本的程序,例如java称为update-alternatives.

更新替代方案 --install /usr/bin/java java /usr/lib/jvm/jdk1.7.0/bin/java 1065
更新替代方案--安装/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 7 java -version
打印:

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 # 更新替代方案 --显示 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 3月19日36日06:03 jre_1.6.0_exports -> /usr/lib64/jvm-exports/jre-1.6.0-ibm
lrwxrwxrwx 1 root root 3月19日36日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 3月19日36日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。

来自 CentOSjava.conf

# 如果您安装了基本 JRE 包
#(例如java-1.6.0-openjdk):
#JAVA_HOME=$JVM_ROOT/jre

# 如果你安装了 devel JDK 包
#(例如java-1.6.0-openjdk-devel):
#JAVA_HOME=$JVM_ROOT/java

从Ubuntujvm.cfg

# 可用作 java、javac 等选项的 JVM 列表。
# 顺序很重要——这个列表中的第一个是默认的 JVM。
# 请注意,该文件及其格式均不受支持
# 将在未来版本中消失。
#
# 您还可以使用以下命令在任意位置选择 JVM
# “-XXaltjvm=”选项,但这也不支持
# 并且可能不会在未来版本中提供。
#
-服务器已知
- 客户端忽略
-热点错误
-经典警告
-本机错误
-绿色错误
-jamvm 已知
-可可已知
- 已知零
-shark ALIASED_TO -零

在 Ubuntu 上有一个程序叫做update-java-alternatives
This is the top几lines of the man page

姓名
       update-java-alternatives - 更新 jre/sdk 安装的替代方案

概要
       update-java-alternatives [--jre] [--plugin] [-t|--test|-v|--verbose]
             -l|--列表[]
             -s|--设置
             -a|--自动
             -h|-?|--帮助

描述
       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|--设置
              将注册的 jre/sdk 安装的所有替代项设置为安装提供的程序路径。

/etc/profile.d我通常还会看到java 启动环境的链接。

我的猜测是你的java库安装在同一个地方,并且配置文件仍然默认为原始版本。您只需要提供新的 JVM 路径即可。

相关内容