如何正确删除 OpenJDK/OpenJRE 并将 SunJDK/SunJRE 设置为默认值

Iva*_*van 49 java

与 Sun JDK/JRE 相比,Ubuntu 似乎更喜欢 OpenJDK/JRE。即使在我安装了 Sun JRE、JDK 和插件并花了一些时间取出与 OpenJDK 相关的软件包之后,apt-get 还是将它们安装回了一些软件包作为依赖项。是否可以更正此行为以支持 Sun Java 程序包?我想只安装一个 Java 堆栈(是的,它有点强迫症,但我喜欢让我的系统干净)并希望它是 Sun Java。

更新:正如 Marcos Roriz 所指出的,问题似乎出在指向 OpenJDK 的 default-jre(依赖于 Java 的包所依赖的),所以问题似乎是关于如何破解 default-jre/default-jdk 指向到 Sun Java。

Lui*_*ado 35

在旧版本的 Ubuntu(9.10 及更低版本)上安装 Sun Java

我想大约三年前我在 Ubuntu 8.04 上遇到过同样的问题。使用openjre时出现了一个奇怪的问题,使用sun jre版本解决了这个问题。以下是适用于 10.04 以下版本的终端中的步骤,因为从 10.04 开始,sun java 已被删除并被 openjre 取代:

sudo apt-get remove openjdk-6-jre default-jre default-jre-headless

sudo apt-get install sun-java6-jre sun-java6-bin sun-java6-plugin sun-java6-fonts
Run Code Online (Sandbox Code Playgroud)

(与 Sun java 相关的所有内容。只是为了确保)

之后,如果您删除了 openjdk,那么您将只有 sun java。如果您没有删除它,那么您将同时拥有它们。要从一种更改为另一种,请执行以下操作:

sudo update-java-alternatives -l - 这将显示您可以使用的 Java 引擎列表。

java 替代的名称是左侧的名称,因此例如 openjdk 将如下所示:

java-6-openjdk 1061 /usr/lib/jvm/java-6-openjdk
Run Code Online (Sandbox Code Playgroud)

您可以像这样将系统设置为 openjdk:

sudo update-java-alternatives -s java-6-openjdk
Run Code Online (Sandbox Code Playgroud)

如果您想使用 Sun,那么您可以这样做(安装 sun 软件包后):

sudo update-java-alternatives -s java-6-sun
Run Code Online (Sandbox Code Playgroud)

如果要使用 java 7 版本,只需将上面提到的数字 6 更改为 7。例如,如果我想安装 openjre 版本 7,我会:

sudo apt-get install openjdk-7-jre default-jre default-jre-headless
Run Code Online (Sandbox Code Playgroud)

在较新版本的 Ubuntu(10.04 及更高版本)上安装 Sun Java

打开终端并输入以下内容:

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update   
sudo apt-get upgrade   
sudo apt-get install oracle-java7-installer
Run Code Online (Sandbox Code Playgroud)

这应该在您的系统上安装 Sun Java 版本。要更改为它,只需执行以下操作,以防您有其他 Java 替代方案:

sudo update-java-alternatives -s java-7-oracle  
Run Code Online (Sandbox Code Playgroud)

如果要自动安装,请键入以下内容:

sudo echo oracle-java7-installer shared/accepted-oracle-license-v1-1 select true | sudo /usr/bin/debconf-set-selections
Run Code Online (Sandbox Code Playgroud)

之后只需执行以下操作来设置默认环境变量:

sudo apt-get install oracle-java7-set-default
Run Code Online (Sandbox Code Playgroud)

请注意,PPA 包括版本 6、7 和 8。因此,您只需更改安装行中的编号即可安装其中任何一个,例如:

sudo apt-get install oracle-java8-installer
Run Code Online (Sandbox Code Playgroud)

将安装 Java 8。在安装您希望使用的 Java 版本并使用update-java-alternatives命令将版本设置为默认版本后,您可以通过键入以下内容来检查您正在使用的版本:

java -version
Run Code Online (Sandbox Code Playgroud)

它将显示您当时使用的默认版本。

我还想提一下,OpenJRE/JDK 比两三年前有很多问题可以通过改用 Sun Java 来解决。


Mar*_*ior 11

我认为问题在于某些 Java 包依赖于指向 openjdk-jre 的 default-jre。我认为没有一种简单的方法可以永久卸载 openjdk。问题是,当您安装 java 包/程序时,您可能会再次碰到 openjdk。

但是,如果您愿意同时拥有两者,那么将 java 运行时程序(java、javah、javap 等)设置为 sun 实现是否容易。这样做:

sudo apt-get install sun-java6-jre sun-java6-plugin sun-java6-fonts
Run Code Online (Sandbox Code Playgroud)

或者如果您是 Java 开发人员(安装 sdk 和 srcs):

sudo apt-get install sun-java6-jdk sun-java6-jre sun-java6-source
Run Code Online (Sandbox Code Playgroud)

并将其设置为默认程序:

sudo update-java-alternatives -s java-6-sun
Run Code Online (Sandbox Code Playgroud)


Bil*_*hor 6

.jdk1.6.0_23.jinfo文件应该是提供的程序及其路径的列表。有一个描述性标题,后跟一个空行。然后是三个字段格式的程序列表:条目类型(jre/jkd/plugin);程序名称;和路径。您应该有一些 jinfo 文件可以用来查看内容应该是什么样子。这可能被替代机制用于确定要创建的链接。我的太阳包的头是。

名称=java-6-sun-1.6.0.22
别名=java-6-sun
优先级=63
部分=非免费

jre ControlPanel /usr/lib/jvm/java-6-sun/jre/bin/ControlPanel
jre java /usr/lib/jvm/java-6-sun/jre/bin/java
jre java_vm /usr/lib/jvm/java-6-sun/jre/bin/java_vm

如果您想在不使用替代机制的情况下覆盖默认 Java 命令,请将您的 Java 路径放在路径中的 /usr/bin 之前。

在进行手动安装时,我将 Java 安装在/opt. 对于您的安装,我会安装在/opt/jdk1.6.0_23. 然后我将路径$JAVA_HOME/bin放在PATH变量的开头。

编辑:这是整个 Sun 文件。Note.java-6-sun.jinfo是指向.java-6-sun-1.6.0.22.jinfo.

名称=java-6-sun-1.6.0.22
别名=java-6-sun
优先级=63
部分=非免费

jre ControlPanel /usr/lib/jvm/java-6-sun/jre/bin/ControlPanel
jre java /usr/lib/jvm/java-6-sun/jre/bin/java
jre java_vm /usr/lib/jvm/java-6-sun/jre/bin/java_vm
jre javaws /usr/lib/jvm/java-6-sun/jre/bin/javaws
jre jcontrol /usr/lib/jvm/java-6-sun/jre/bin/jcontrol
jre keytool /usr/lib/jvm/java-6-sun/jre/bin/keytool
jre pack200 /usr/lib/jvm/java-6-sun/jre/bin/pack200
jre policytool /usr/lib/jvm/java-6-sun/jre/bin/policytool
jre rmid /usr/lib/jvm/java-6-sun/jre/bin/rmid
jre rmiregistry /usr/lib/jvm/java-6-sun/jre/bin/rmiregistry
jre unpack200 /usr/lib/jvm/java-6-sun/jre/bin/unpack200
jre orbd /usr/lib/jvm/java-6-sun/jre/bin/orbd
jre servertool /usr/lib/jvm/java-6-sun/jre/bin/servertool
jre tnameserv /usr/lib/jvm/java-6-sun/jre/bin/tnameserv
jre jexec /usr/lib/jvm/java-6-sun/jre/lib/jexec
jdk HtmlConverter /usr/lib/jvm/java-6-sun/bin/HtmlConverter
jdk appletviewer /usr/lib/jvm/java-6-sun/bin/appletviewer
jdk apt /usr/lib/jvm/java-6-sun/bin/apt
jdk extcheck /usr/lib/jvm/java-6-sun/bin/extcheck
jdk idlj /usr/lib/jvm/java-6-sun/bin/idlj
jdk jar /usr/lib/jvm/java-6-sun/bin/jar
jdk jarsigner /usr/lib/jvm/java-6-sun/bin/jarsigner
jdk javac /usr/lib/jvm/java-6-sun/bin/javac
jdk javadoc /usr/lib/jvm/java-6-sun/bin/javadoc
jdk javah /usr/lib/jvm/java-6-sun/bin/javah
jdk javap /usr/lib/jvm/java-6-sun/bin/javap
jdk jconsole /usr/lib/jvm/java-6-sun/bin/jconsole
jdk jdb /usr/lib/jvm/java-6-sun/bin/jdb
jdk jhat /usr/lib/jvm/java-6-sun/bin/jhat
jdk jinfo /usr/lib/jvm/java-6-sun/bin/jinfo
jdk jmap /usr/lib/jvm/java-6-sun/bin/jmap
jdk jps /usr/lib/jvm/java-6-sun/bin/jps
jdk jrunscript /usr/lib/jvm/java-6-sun/bin/jrunscript
jdk jsadebugd /usr/lib/jvm/java-6-sun/bin/jsadebugd
jdk jstack /usr/lib/jvm/java-6-sun/bin/jstack
jdk jstat /usr/lib/jvm/java-6-sun/bin/jstat
jdk jstatd /usr/lib/jvm/java-6-sun/bin/jstatd
jdk native2ascii /usr/lib/jvm/java-6-sun/bin/native2ascii
jdk rmic /usr/lib/jvm/java-6-sun/bin/rmic
jdk schemagen /usr/lib/jvm/java-6-sun/bin/schemagen
jdk serialver /usr/lib/jvm/java-6-sun/bin/serialver
jdk wsgen /usr/lib/jvm/java-6-sun/bin/wsgen
jdk wsimport /usr/lib/jvm/java-6-sun/bin/wsimport
jdk xjc /usr/lib/jvm/java-6-sun/bin/xjc
插件 xulrunner-1.9-javaplugin.so /usr/lib/jvm/java-6-sun/jre/lib/amd64/libnpjp2.so
插件 mozilla-javaplugin.so /usr/lib/jvm/java-6-sun/jre/lib/amd64/libnpjp2.so


Fab*_*ndl 6

删除 openjdk 和 icedtea:

apt-get purge openjdk-\* icedtea-\* icedtea6-\*
Run Code Online (Sandbox Code Playgroud)

将以下内容添加到 /etc/apt/sources.list

deb http://ppa.launchpad.net/webupd8team/java/ubuntu YOUR_UBUNTU_VERSION_HERE main
Run Code Online (Sandbox Code Playgroud)

安装 Sun/Oracle JRE 或 JDK:

apt-get install oracle-jdk7-installer
apt-get install oracle-java7-installer 
Run Code Online (Sandbox Code Playgroud)

  • 在此之后,您根本就没有 Java 了……问题实际上是指谁来替换另一个,而不是如何从系统中删除 OpenJDK。在您的答案中添加更多信息,仅通过以下步骤无法回答问题。 (2认同)