与 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 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)
打开终端并输入以下内容:
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)
该.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
删除 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)
| 归档时间: |
|
| 查看次数: |
199017 次 |
| 最近记录: |