0

我正在尝试使用 javac 编译软件。问题是我使用 yum remove 删除了 open-jdk 并下载了 sun jdk 并将其安装在/usr/java文件夹中。

我不知道如何判断当前的 jvm 是 openjdk running 还是 sunjdk。

我从文件夹中删除了 java 和 javac 文件,/usr/bin并使 PATH 变量包含/usr/java/jdk1.6-0/bin.

bin每次重新启动系统时,我仍然会在文件夹中看到 java 文件。

有人可以帮我解决这个问题吗?

另外,如果这会有所帮助,我正在尝试编译一个软件,它会给出以下警告:

List 是一种原始类型。对泛型类型 List 的引用应该被参数化

我认为这是因为 open-jdk。我无法弄清楚如何完全删除 open-jdk。

谢谢

4

3 回答 3

2
  1. 从应用程序行为的角度来看,OpenJDK 和等效的 Oracle JDK 之间应该没有明显的区别。在 JVM 的低级别上有所不同;例如,JIT 编译器和垃圾收集器的性能改进。

  2. 如果您需要知道您实际运行的是哪个版本,请使用java -version或(在正在运行的应用程序中)查看对象中的属性System.getProperties()。(javadoc 解释了期望的标准属性。)

  3. 关于原始类型的消息与您的系统是 OpenJDK 还是 Oracle JDK 无关。所有 Java 5 / 6 / 7 编译器都会收到类似的警告消息……包括来自 IBM 和其他地方的编译器。

    实际问题出在您正在编译的代码中。您可以在短期内安全地忽略警告......或者如果代码必须在 Java 5 之前的 JVM 上保持可通过 /runnable 编译。

于 2011-03-21T22:25:50.620 回答
0

至于环境细节,真的没什么好担心的。您只需要像警告所示那样参数化您的Collection类。javac了解generics. 还要发布您的代码,以便我们可以查明警告。

于 2011-03-21T22:25:10.157 回答
0

正如其他人提到的,不同的 JVM 没什么好担心的。在控制台中使用java -version以确定它是哪一个。

至于原始类型消息,您可能正在使用 Generic 类而不指定类型。即你使用List而不是List<String>. List<?>如果您不需要类型,则可以简单地将其设置为,或者将其显式设置为类型。

于 2011-03-21T22:36:25.340 回答