使用openjdk1.6或sun jdk1.6编译代码

时间:2011-03-21 22:19:34

标签: compiler-construction java openjdk

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

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

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

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

有人可以帮我这个吗?

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

  

列表是原始类型。参考   通用类型列表应该是   参数

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

谢谢

3 个答案:

答案 0 :(得分: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之前保持可编译/可运行。

答案 1 :(得分:0)

对于环境细节,真的没有什么可担心的。您只需参数化Collection类,就像javac警告所示。了解generics。同时发布您的代码,以便我们可以查明警告。

答案 2 :(得分:0)

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

对于原始类型消息,您可能正在使用Generic类而未指定类型。即您使用List代替List<String>。如果您不想要类型,可以简单地将其设置为List<?>,或者将其明确设置为类型。