簡體   English   中英

用Java 8 JDK編譯java 6安裝

[英]Compile with java 6 from java 8 JDK installed

我需要使用Java 6為大學編譯我的源代碼。 我目前在我的PC(Linux)上安裝了Java 8 JDK。 如何在Java 6中編譯?

ps我明白我將無法使用任何Java 7或8功能。

pps我意識到java 6源代碼將使用Java 8 JDK編譯好但是我發現在家里編譯時我不小心在我的程序中使用了后Java 6功能。 當我嘗試在uni的實驗室計算機上編譯源代碼時,我遇到了一堆錯誤。 例如,無法將對象轉換為基元。

解決該問題的方法是使用更高版本的SDK進行編譯,並在編譯時使用交叉編譯選項

交叉編譯選項

默認情況下,類是根據javac附帶的平台的引導程序和擴展類編譯的。 但javac還支持交叉編譯,其中類是針對不同Java平台實現的引導程序和擴展類編譯的。 交叉編譯時使用-bootclasspath和-extdirs選項很重要。

- 目標版本

生成以指定的虛擬機版本為目標的類文件。 類文件將在指定的目標和更高版本上運行,但不會在早期版本的JVM上運行。 有效目標是1.1,1.2,1.3,1.4,1.5(也是5),1.6(也是6),1.7(也是7)和1.8(也是8)。

-target選項的缺省值取決於-source選項的值:

  • 如果未指定-source選項,則-target選項的值為1.8
  • 如果-source選項為1.2,則-target選項的值為1.4
  • 如果-source選項為1.3,則-target選項的值為1.4
  • 如果-source選項為1.5,則-target選項的值為1.8
  • 如果-source選項為1.6,則-target的值為選項1.8
  • 如果-source選項為1.7,則-target的值為選項1.8
  • 對於-source選項的所有其他值,-target選項的值是-source選項的值。

-bootclasspath bootclasspath

針對指定的一組引導類進行交叉編譯。 與用戶類路徑一樣,引導類路徑條目由冒號(:)分隔,可以是目錄,JAR歸檔或ZIP歸檔。

要完全正確地使用這些選項(即也使用-bootclasspath選項),需要目標版本的JRE(而不是JDK)的rt.jar

您可以使用以下內容進行編譯

% javac -target 1.6 <whatever you want to compile>

我有一個類似的問題,項目的一部分想要使用Java 6,而項目的其余部分需要Java 8.為此,您可以在一個終端窗口中更改java版本。

要在不更改配置文件的情況下僅在一個終端窗口中更改Java版本,請使用:

export JAVA_HOME=$(/usr/libexec/java_home -v 1.6)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM