如何正确删除OpenJDK / OpenJRE并将SunJDK / SunJRE设置为Default
Ubuntu似乎比Sun JDK / JRE更喜欢OpenJDK / JRE。 即使在我安装了Sun JRE,JDK和插件并花了一些时间来推出与OpenJDK相关的软件包之后,apt-get也将它们作为依赖项安装了一些软件包。 是否可以更正此行为以支持Sun Java包? 我想安装一个且只安装Java堆栈(是的,它有点强迫症 ,但我喜欢让我的系统干净)并且希望它是Sun Java。
更新:正如Marcos Roriz指出的那样,问题似乎是在default-jre(依赖于Java的程序包依赖)依赖于指向OpenJDK,因此问题似乎是如何破解default-jre / default-jdk指向到Sun Java。
在旧版本的Ubuntu上安装Sun Java(9.10及以下版本)
大约三年前我曾经遇到过与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
(Sun java相关的一切。只是为了确保)
之后,如果您删除了openjdk,那么您将只拥有sun java。 如果你没有删除它,那么你有两个。 要从一个改为另一个,请执行以下操作:
sudo update-java-alternatives -l
– 这将显示您可以使用的Java引擎列表。
java替代品的名称是左侧的名称,例如openjdk将如下所示:
java-6-openjdk 1061 /usr/lib/jvm/java-6-openjdk
你可以将系统设置为openjdk,如下所示:
sudo update-java-alternatives -s java-6-openjdk
如果你想使用Sun那么你会这样做(安装太阳包后):
sudo update-java-alternatives -s java-6-sun
如果你想使用java 7版本,只需更改上面提到的数字7为7。例如,如果我想安装openjre版本7,我会:
sudo apt-get install openjdk-7-jre default-jre default-jre-headless
在较新版本的Ubuntu上安装Sun Java(上面是10.04)
打开终端并键入以下内容:
sudo add-apt-repository ppa:webupd8team/java sudo apt-get update sudo apt-get upgrade sudo apt-get install oracle-java7-installer
这应该在您的系统上安装Sun Java版本。 要更改为它,只需执行以下操作以防其他Java备选方案:
sudo update-java-alternatives -s java-7-oracle
如果要自动安装,请键入以下内容:
sudo echo oracle-java7-installer shared/accepted-oracle-license-v1-1 select true | sudo /usr/bin/debconf-set-selections
之后,只需执行以下操作即可设置默认环境变量:
sudo apt-get install oracle-java7-set-default
请注意,PPA包括版本6,7和8.因此,您只需更改安装行中的编号即可安装其中任何一个,例如:
sudo apt-get install oracle-java8-installer
将安装Java 8.安装您希望使用的Java版本并使用update-java-alternatives
命令将版本设置为默认版本后,您可以通过键入以下内容来检查您正在使用的版本:
java -version
它将显示您当时使用的默认版本。
我还想提一下,OpenJRE / JDK在2年或3年前已经走过了很长一段路,当时有许多问题已经通过改用Sun Java来解决。
我认为问题是一些Java包依赖于default-jre,它指向openjdk-jre。 我认为有一种简单的方法可以永久卸载openjdk。 问题是你在安装java软件包/程序时可能会再次遇到openjdk。
但是如果你愿意同时拥有这两者,那么将java运行时程序(java,javah,javap等)设置为sun实现是否容易。 这样做:
sudo apt-get install sun-java6-jre sun-java6-plugin sun-java6-fonts
或者如果你是一个java dev(安装sdk和srcs):
sudo apt-get install sun-java6-jdk sun-java6-jre sun-java6-source
并将其设置为默认程序:
sudo update-java-alternatives -s java-6-sun
.jdk1.6.0_23.jinfo
文件应该是提供的程序及其路径的列表。 有一个描述性标题后跟一个空行。 然后是三种字段格式的程序列表:条目类型(jre / jkd / plugin); 程序名称; 和路径。 您应该使用一些jinfo文件来查看内容应该是什么样子。 备用机制可能会使用它来确定要创建的链接。 我太阳包的头是。
名称= java的6-太阳1.6.0.22 别名= java的6-太阳 优先级= 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之前。
在进行手动安装时,我在/opt
安装Java。 对于您的安装,我将安装在/opt/jdk1.6.0_23
。 然后我将路径$JAVA_HOME/bin
放在PATH
变量的开头。
编辑:这是整个Sun文件。 注意.java-6-sun.jinfo
是.java-6-sun-1.6.0.22.jinfo
的符号链接。
名称= java的6-太阳1.6.0.22 别名= java的6-太阳 优先级= 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-\*
将以下内容添加到/etc/apt/sources.list
deb http://ppa.launchpad.net/webupd8team/java/ubuntu YOUR_UBUNTU_VERSION_HERE main
安装Sun / Oracle JRE或JDK:
apt-get install oracle-jdk7-installer apt-get install oracle-java7-installer
我将此行添加到/ etc / environment文件中:JAVA_HOME =“/ usr / lib / jvm / jdk1.6.0_23”并将JAVA_HOME / bin添加到PATH变量中,但操作系统仍然无法识别命令java,它没有安装,并提供给我gcj和openjdk。
你检查过了吗?
echo $JAVA_HOME echo $PATH
如果您不需要它:在synaptic或apt-get中卸载openjdk和gcj。
apt-get remove gcj apt-get remove openjdk
我会禁止java替代,然后主要像BillThor所说,为什么我给了他一个upvote。
which javac which java
应该指向你安装java的位置,以及它在PATH中的位置。
- 打开System-> Administration-> Synaptic Package Manager,然后完全删除OpenJDK。
- 在shell中测试Java类型
java -version
测试版本(它只显示Sun java) - 输入
sudo update-java-alternatives -l
- 你完成了 现在你只安装了sun java,并将其设置为默认的jdk
并且它只有在你安装了两个jdk并且你想将sun-java设置为默认环境时才有效
使用Ubuntu 10.10,似乎你需要先在Synaptic中标记删除libaccess-bridge-java,然后标记openjdk-6-jre-headless。
我最终得到了一个要删除的列表:
ca-certificates-java,icedtea-6-jre-cacao,libaccess-bridge-java,libaccess-bridge-java-jni,openjdk-6-jre,openjdk-6-jre-headless,openjdk-6-jre-lib。
这工作但它留下了一个目录/etc/java-6-openjdk
,其中包含各种文件和子目录,我将其隔离在一个新目录中。 没有任何exception的影响,所以可能它只是一个剩余的残余物。
这给我留下了我直接从Java网站下载的Java。 但是,尽管已将其设置为默认值并创建指向Firefox插件目录的链接,但它不再起作用。 安装sun-java6-jre及其关联的软件包gsfonts-x11,odbcinst,odbcinst1debian2,sun-java6-bin和unixodbc,通过Synaptic,看到Java插件再次开始工作。 删除插件目录中的链接并将其替换为实际的libnpjp2.so文件不起作用。 使用通过Synaptic安装的Java中的ns7或ns7-gcc29目录中的libjavaplugin_oji.so文件的链接也不起作用。 这告诉我,要在Firefox中获取最新的Java插件,可以按照Java网站上的说明进行操作,并且运行下载的Java需要运行已下载的Java的集成Linux Java,然后依赖于它的操作。一旦插件被激活,它周围的文件。 虽然需要完全理解包含Java和Linux的代码才能真正解决它的谜团,但也许这些实验有助于找到在这种情况下可能需要两个Java的原因。 至少有可能删除所有Java,如果有人发现这样做有用。
我在新的Ubuntu 10.10机器上做的事情是
- 添加java-6-sun,
- 删除openJDK(首先添加sun Java,否则将删除一堆像tomcat一样的东西等)
那对我来说没问题,不再有openJDK依赖
给出这个问题的答案对我不起作用。 也就是说,以下失败:
sudo apt-get purge sun-java5-jre sun-java6-font sun-java6-jre
有错误:
Virtual packages like 'sun-java6-jre' can't be removed
请尝试以下说明 :
- 打开Ubuntu软件中心 。
- 搜索IcedTea。
- 如果已安装,请删除IcedTea Java Plug-in(
icedtea-6-jre-cacao
)。 - 选择OpenJDK Java 7 Runtime。
- 单击安装。
- 等待41.6 MB软件包下载并安装。
现在安装了OpenJDK(IcedTea),它应该允许您(如果有此错误)继续安装Oracle的JDK而不会出错。
也可以看看:
- 官方文件
- 如何安装Sun / Oracle专有的Java JDK 6/7/8或JRE?
- 如何安装Oracle Java JDK 7?
首先:删除openjdk和icedtea插件。
sudo apt-get remove openjdk* icedtea*
第二步:将.bin jdk文件复制到/ opt或/ usr / java并解压缩。
sudo cp jdk_1.16.0.bin /usr/java
第三:将java文件的链接放到/ usr / bin /
ln -s /usr/java/jdk_1.6.0/bin/java /usr/bin/java ln -s /usr/java/jdk_1.6.0/bin/javac /usr/bin/javac
使用update-alternatives更新替代方案
在Firefox插件目录中创建指向Java插件的符号链接。
在Firefox插件目录中创建指向Java Plugin libnpjp2.so文件的符号链接:
cd /plugins ln -s /lib/i386/libnpjp2.so .
希望这可以帮助。