![](/img/trans.png)
[英]In the JDK 1.6 compiler, what does “-source 1.6” enable, if anything?
[英]Compiling code using openjdk1.6 or sun jdk1.6
我正在嘗試使用javac編譯軟件。 問題是我使用yum刪除了open-jdk並下載了sun jdk並將其安裝在/usr/java
文件夾中。
我不知道如何判斷當前的jvm是openjdk運行還是sunjdk。
我從/usr/bin
文件夾中刪除了java和javac文件,並使PATH變量包含/usr/java/jdk1.6-0/bin
的新路徑。
每次重新啟動系統時,我仍然會在bin
文件夾中看到java文件。
有人可以幫我這個嗎?
此外,如果這將有所幫助,我正在嘗試編譯軟件,它給出以下警告:
列表是原始類型。 應參數化對泛型類型List的引用
我認為這是因為open-jdk。 我無法弄清楚如何完全刪除open-jdk。
謝謝
從應用程序行為的角度來看,OpenJDK與等效的Oracle JDK之間應該沒有明顯的區別。 差異在JVM的低級別下降; 例如,JIT編譯器和垃圾收集器的性能改進。
如果您需要告訴您實際運行的是哪個版本,請使用java -version
或(在正在運行的應用程序中)查看對象System.getProperties()
中的屬性。 (javadoc解釋了期望的標准屬性。)
有關原始類型的消息與您的系統是OpenJDK還是Oracle JDK無關。 您將獲得與所有Java 5/6/7編譯器類似的警告消息...包括來自IBM和其他地方的編譯器。
實際問題出在您正在編譯的代碼中。 您可以在短期內安全地忽略該警告......或者如果代碼必須在Java 5之前的JVM上保持可編譯狀態/ runnable。
環境細節真的沒什么值得擔心的。 您只需要像javac
警告所示參數化您的Collection
類。 了解generics
。 同時發布您的代碼,以便我們可以查明警告。
正如其他人提到的,不同的JVM無需擔心。 在控制台中使用java -version
來確定它是哪一個。
至於原始類型消息,您可能正在使用Generic類而不指定類型。 即你使用List
而不是List<String>
。 如果您不想要類型,則可以將其設置為List<?>
,或者將其顯式設置為類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.