如何设置默认Java版本?


122

我遵循了关于此问题的所有说明,但是最后一部分遇到了一些问题。

我实际上有Java 6.22版,并且想更新到6.30版。

因此,将提取的目录java-6-oracle移入后,/usr/lib/jvm我不知道该怎么办,因为上面答案中指出的脚本从Java 5更新为Java 6。

为了清楚起见,如果ls在dir中执行以下操作,则输出以下内容/usr/lib/jvm

$ ls -l /usr/lib/jvm
total 8 
lrwxrwxrwx  1 root root   14 2011-07-12 15:18 default-java -> java-6-openjdk
lrwxrwxrwx  1 root root   14 2011-07-12 12:19 java-1.6.0-openjdk -> java-6-openjdk 
drwxr-xr-x 10 root root 4096 2012-04-12 12:06 java-6.31-oracle 
drwxr-xr-x  7 root root 4096 2012-02-24 14:43 java-6-openjdk

我现在应该怎么办?


新增部分

在@fossfreedom的建议下,我还是运行了脚本,实际上它更新了Java版本。

实际上,如果我运行命令,java -version输出将如下所示:

$ java -version
java version "1.6.0_31"
Java(TM) SE Runtime Environment (build 1.6.0_31-b04)
Java HotSpot(TM) Server VM (build 20.6-b01, mixed mode)

目前仍然是一个问题,如果伊伦javac -version它给我安装了旧版本:

$ javac -version
javac 1.6.0_22

如果我在此链接上使用测试仪,它将告诉我版本是

Java Version 1.6.0_22 from Sun Microsystems Inc.

怎么了

似乎Java Runtime Environment已更新,但Java Compiler和浏览器的Java插件没有更新。

如何更新它们?


其他新增部分

sudo update-alternatives --config java 将返回以下输出

$ sudo update-alternatives --config java
There are 2 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                      Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-6.31-oracle/bin/java     1062      auto mode
  1            /usr/lib/jvm/java-6-openjdk/jre/bin/java   1061      manual mode
  2            /usr/lib/jvm/java-6.31-oracle/bin/java     1062      manual mode

Press enter to keep the current choice[*], or type selection number:

通过将JRE正确更新到版本6.31的事实,这是有道理的,有关Java编译器和Java浏览器插件的问题。

有任何想法吗?


@fossfreedom我还没有尝试过,因为我认为将它从Java 5到6上传是明确编写的,这不是一个好主意吗?
Matteo

1
嗯-也许您可能会混淆webupd8脚本为0.5b?那是脚本的版本-它不引用Java版本。试试看。让我们看一下运行脚本时窗口的屏幕截图。
fossfreedom

@fossfreedom是的,这让我完全困惑; DI运行了脚本!!检查编辑问题THKS很多帮助我..
利玛窦

多么奇怪...从未遇到过。无论如何-请看下面的答案-您应该能够sudo update-alternatives按照示例进行操作。
fossfreedom

@fossfreedom再次更新了问题!
Matteo

Answers:


103

关于您的第一个问题:

您可能会混淆webupd8脚本为0.5b。那是脚本的版本-它不引用Java版本。

除了javac版本的设置。

我怀疑您需要显式给出javac编译器的路径

sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/lib/jvm/java-6.31-oracle/bin/javac" 1

其次是:

sudo update-alternatives --config javac

关于设置Java chrome插件。

主要问题:

如何安装Oracle JDK 6?

包括此信息-由于您的文件夹结构略有不同,因此您的链接命令应为:

ln -s /usr/lib/jvm/java-6.31-oracle/jre/lib/i386/libnpjp2.so ~/.mozilla/plugins/

它本身就改变了编译器-请参阅下面的答案以获取update-java-alternatives,它可以切换所有与Java相关的替代方法,在我的系统上是82。
格雷格2014年

55

看到这个 ; 跑

sudo  update-java-alternatives --list

通过名称和目录列出计算机上的所有Java安装,然后运行

sudo  update-java-alternatives --set [JDK/JRE name e.g. java-8-oracle]

选择要使用的JRE / JDK。

如果要为每个Java任务使用不同的JDK / JRE,则可以运行update-alternatives一次配置一个Java可执行文件;你可以跑

sudo  update-alternatives --config java[Tab]

查看可以配置的Java命令(java,javac,javah,javaws等)。接着

sudo  update-alternatives --config [javac|java|javadoc|etc.]

会将Java任务/命令关联到特定的JDK / JRE。

您可能还需要为某些应用程序设置JAVA_HOME:从此答案可以使用

export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")

对于JRE,或

export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:jre/bin/java::")

用于JDK。


25

我认为您应该查看软件包中的update-java-alternatives命令java-common及其使用的*.jinfo文件。这样一来,您应该能够在Java安装之间完全切换(无论JDK,JRE等)。


2
我尝试了update-java-alternatives,然后java -version是正确的,但是其中的链接$JAVA_HOME仍然错误...我手动更改了该链接,但是我想知道update-java-alternatives在这方面是否缺少某些内容。
Alexis Wilke

6

在ubuntu / linux上,您可以使用以下命令切换Java版本

update-alternatives --config java

但在此之前,您需要安装该版本。

您可以使用此脚本(./install-java.sh)安装多个JVM。

#!/bin/sh
(
lookforJdks=$PWD
echo "Directory: $lookforJdks"
jdks=`test -e ./javac || find $lookforJdks -type d -iname '*jdk1.*' 2> /dev/null`
#set -e
echo 'which jdk do you want to choose? looking for jdks. This might take a while'
echo "$jdks" | awk '{printf("%5d : %s\n", NR,$0)}'
read choose
test -e ./javac || cd `echo "$jdks" | tr '\n' ',' | cut -d',' -f $choose`/bin
for e in appletviewer extcheck idlj jar jarsigner java javac javadoc javah javap jconsole \
 jdb jhat jinfo jmap jps jrunscript jsadebugd jstack jstat jstatd native2ascii rmic \
 schemagen serialver wsgen wsimport xjc jvisualvm jmc; do sudo update-alternatives \
 --install /usr/bin/$e $e $(readlink -f ./$e) 100; done
)

echo "RUN update-alternatives --config java"

将此脚本放在已解压缩JVM的文件夹中,然后运行:

/opt/install-java.sh

下次使用:

update-alternatives --config java

1

如果要手动设置javac,javaws,javadoc或任何其他与Java相关的命令的替代方案,则可能希望使它们成为Java替代方案的从属。

sudo update-alternatives --install "/usr/bin/java" "java" "/opt/jdk1.8.0_74/bin/java" 0 --slave "/usr/bin/javadoc" "javadoc" "/opt/jdk1.8.0_74/bin/javadoc"


update-alternatives: updating alternative /opt/jdk1.8.0_74/bin/java because link group java has changed slave links


:/opt/jdk1.8.0_74$ sudo update-alternatives --display java

java-自动模式链接的最佳版本是/opt/jdk1.8.0_74/bin/java链接当前指向/opt/jdk1.8.0_74/bin/java链接Java是/ usr / bin / java slave javadoc是/ usr / bin / javadoc /opt/jdk1.8.0_74/bin/java-优先级0从属Javadoc:/opt/jdk1.8.0_74/bin/javadoc

使用安装jdk的目录更改/opt/jdk1.8.0_74/。


0

/etc/environment在任何文本编辑器中打开并添加以下行:

JAVA_HOME="usr/lib/jvm/open-jdk 

-Java路径可能有所不同。
通过运行以下命令,使用source加载变量:

source /etc/environment

然后通过运行以下命令检查变量:

echo $JAVA_HOME

设置此路径后,运行以下命令:

sudo  update-java-alternatives --list

选择默认的Java版本。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.