Java - 为什么显示2个版本?

时间:2010-10-24 21:09:59

标签: java

我想知道我的ubuntu系统上安装了哪个版本的java。

java -version命令显示:

cmdprompt $ java -version

  

java版“1.6.0_20”

     

Java(TM)SE运行时环境(构建   1.6.0_20-B02)

     

Java HotSpot(TM)客户端VM(构建   16.3-b01,混合模式,共享)

但是以下cmd 显示安装了2个Java版本?这些是什么?

cmdprompt $ ls -l $(type -path -all java)

  

lrwxrwxrwx 1 root root 22 2010-02-28 14:21 / usr / bin / java - > / etc / alternatives / java

     

lrwxrwxrwx 1 root root 15 2010-06-29 22:36 / usr / lib / jvm / java-6-sun / bin / java - >   的 ../ JRE / bin中/ JAVA

如何确保只安装了一个版本的JAVA - 这样就没有构建冲突?

3 个答案:

答案 0 :(得分:4)

alternatives目录包含指向您首选备选方案的链接。 (这使得在首选版本之间切换非常容易。)

对我而言,您似乎只安装了一个版本,/etc/alternatives/java指向此版本。

  

如何确保只安装了一个版本的JAVA - 这样就没有构建冲突?

嗯,首先,我怀疑你会遇到构建冲突的麻烦。但是为了确保您只安装了一个版本的java,您可以列出所有已安装的包,这些包被称为java,如下所示:

dpkg --get-selections | grep -i java

然后使用apt-get remove pkgname删除您不想安装的软件包。

答案 1 :(得分:2)

Ubuntu通过常用技巧支持几种不同的Java安装,即符号链接。如果你输入which java它会告诉你“java”解析为“/ usr / bin / java”(应该安装Java),而后者又指向/etc/alternatives/java这是一个符号链接通过update-alternatives命令自动更新。例如,此命令可用于在Sun的Java实现和Java的Open JDK版本之间切换。不会有任何冲突,因为它们各自占据不同的位置并具有不同的路径,并且符号链接(系统期望找到Java的位置)可以很容易地更新以切换到要使用的任何一个。

您可以使用update-alternatives查看当前选择的Java版本。例如:

sudo update-alternatives -l

上面的命令将告诉您为各种工具选择了哪些“替代品”。

答案 2 :(得分:1)

我一直安装了十几个版本的java,而且我从未遇到构建冲突。构建应该一次只使用一个版本的Java。所有版本的Java 6基本上都是兼容的,所以即使你混合使用它们也不会出现问题。

如果您尝试在Java 5.0编译器中使用使用Java 6编译的类,则会出现错误,这会使您明显遇到版本问题。但是,如果设置'-target 1.5'选项,则可以混合Java 5.0和6编译器。

简而言之,除非你知道自己有问题,否则我不会担心。

相关问题