2011-03-21 104 views
0

我想编译一个使用javac的软件。问题是我删除打开jdk使用yum删除并下载sun jdk并将其安装在/usr/java文件夹中。使用openjdk1.6或sun编译代码jdk1.6

我不知道如何弄清楚当前的jvm是openjdk running还是sunjdk。

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

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

有人能帮助我吗?

此外,如果这会是有帮助的,我尝试编译软件和它提供了以下警告:

List是原始类型。引用 泛型类型列表应 参数

我想这是因为开放式的JDK。我无法弄清楚如何完全删除open-jdk。

谢谢

+0

您的'/ usr/bin'中的'java和javac'可能只是您的linux distro/jdk复制的软链接。 – asgs 2011-03-21 22:34:58

回答

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

我想它是'java -version'。 – asgs 2011-03-21 22:29:36

+0

@asgs - 固定... – 2011-03-21 22:32:46

0

关于环境细节,真的没有什么可担心的。您只需要参考您的Collection类,如您的javac警告指示。了解generics。同时发布您的代码,以便我们可以查明警告。

0

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

至于原始类型消息,您可能使用的是一般类而不指定类型。即您使用List而不是List<String>。如果您不需要某个类型,或者将其明确设置为某个类型,则可以简单地将其设置为List<?>