[英]Ant is using wrong java version
我正在使用 Ant 1.7.0 並安裝了 JAVA_HOME 中的 java 1.6。
我想使用 java 1.5 構建一個項目,因此我已將 JAVA_HOME 導出為我的 java 1.5 目錄。
java -version
說“1.5”。 當我運行 Ant 時,它使用 java 1.6。
剛剛遇到這個問題,這是因為當默認 JRE 為 1.6 時,我首先將構建文件添加到 ant-view。
沒有特定於項目的 JRE,我將默認值更改為 1.5,即使 eclipse 運行在 1.5 中,JAVA_HOME 也是 1.5。 從命令行運行 ant 目標使用 JRE 1.5,但在 eclipse 中它仍然使用 1.6。
我必須右鍵單擊 ant 目標,選擇 Run As... 並更改 JRE 選項卡下的 JRE。 此設置會被記住以供后續運行使用。
在日食中:
右鍵單擊您的 build.xml
單擊“運行方式”,單擊“外部工具配置...”
選擇選項卡JRE 。 選擇您正在使用的 JRE。
重新運行任務,現在應該沒問題了。
根據ant 手冊,設置 JAVA_HOME 應該可以工作 - 您確定更改的設置對 ant 可見嗎?
或者,您可以使用 JAVACMD 變量。
以詳細模式運行 ant : ant -v
並尋找線索。
您可以使用 javac 標記上的目標和源屬性來設置目標運行時。 下面的示例將在支持版本 1.4 或更高版本的任何編譯器上編譯任何源代碼以定位版本 1.4。
<javac compiler="classic" taskname="javac" includeAntRuntime="no" fork=" deprecation="true" target="1.4" source="1.4" srcdir="${src}" destdir="${classes}">
注意:'srcdir' 和 'destdir' 是在構建腳本中其他位置設置的屬性值,例如<property name="classes" value="c:/classes" />
如果您使用的是 Eclipse IDE,則可以通過以下步驟實現:
右鍵單擊 ant 構建文件 ( build.xml
) 中的任務。
將鼠標懸停在“運行方式”上,單擊“外部工具配置...”。
在“參數”中添加以下內容:
-Dant.build.javac.target=1.5 -Dant.build.javac.source=1.5
構建文件:
<target name="print-version">
<echo>Java/JVM version: ${ant.java.version}</echo>
<echo>Java/JVM detail version: ${java.version}</echo>
</target>
輸出:
[echo] Java/JVM version: 1.5
[echo] Java/JVM detail version: 1.5.0_08
您還可以在 javac 任務中指定要使用的兼容性級別(1.4、1.5、1.6),您可以設置“源”和“目標”級別值,請查看此處的文檔: Javac 任務文檔
這是一個相當老的問題,但我會添加我的筆記以供將來參考。
我有一個類似的問題,並通過更改 PATH 變量中的導出順序來修復它。
例如,我使用了一種將字符串連接到我的 PATH 的方法(這只是一個示例):
$> export PATH='$PATH:'$JAVA_HOME
如果我的變量 PATH 中已經有一個 java,那么最后一個值將毫無意義,因此順序很重要。 為了解決這個問題,我開始通過首先添加我的變量,然后添加 PATH 來反轉它。
按照這個想法,我顛倒了 ANT_HOME 的導出順序。 在 ANT_HOME 之前添加 JAVA_HOME。
這可能只是巧合,但它對我有用。
JAVACMD
是 Ant 特定的環境變量。 螞蟻醫生說:
JAVACMD — Java 可執行文件的完整路徑。 使用它來調用不同於 JAVA_HOME/bin/java(.exe) 的 JVM。
因此,如果您的java.exe
完整路徑是: C:\\Program Files\\Java\\jdk1.8.0_211\\bin\\java.exe
,請創建一個名為JAVACMD
的新環境變量並將其值設置為提到的路徑(包括\\java.exe
C:\\Program Files\\Java\\jdk1.8.0_211\\bin\\java.exe
\\java.exe
)。 請注意,您需要關閉並重新打開終端(cmd、Powershell 等),以便新的環境變量生效。
如果你沒有使用eclipse。 然后,您可以直接在文件上更改 ant java 屬性,如此處所述。
http://pissedoff-techie.blogspot.in/2014/09/ant-picks-up-incorrect-java-version.html
使用所需的 java 版本(在您的情況下為 java 1.5)設置您的JAVA_HOME
環境變量,然后在build.xml
使用<javac></javac>
標簽內的executable="${JAVA_HOME}/bin/javac"
。
例子:
<target name="java compiler" description="Compiles the java code">
<javac executable="${JAVA_HOME}/bin/javac" srcdir="./src"
destdir="${build.dir}/classes">
</javac>
</target>
如果從 eclipse 運行 Ant,eclipse 將使用在類路徑(構建路徑)中配置的 jdk 或 jre。
根據 Ant 文檔,將JAVACMD
環境變量設置為要在其下運行 Ant 的 JRE 版本的java.exe
的完整路徑。
默認情況下,Ant 會將 JRE 視為工作區 JRE 版本。 您需要按照以下步驟根據您需要的版本進行更改。
在日食中:
右鍵單擊您的 build.xml 單擊“運行方式”,單擊“外部工具配置...”選擇選項卡 JRE。
選擇您正在使用的 JRE。
重新運行任務,現在應該沒問題了。
如果您的構建文件還沒有它(有些有,例如 Apache Tomcat),您可以將echoproperties
目標添加到build.xml
,例如
<target name="echoproperties">
<echoproperties/>
</target>
然后您可以運行 ant 任務echoproperties
並查找“java.version”或ant -v
並查找“Java 版本”,例如在我的機器上
ant echoproperties | grep java.version
顯示
[回聲屬性] java.version=11.0.9.1
和
ant -v | grep -i "java version"
顯示
檢測到的Java版本:11在:/opt/java/zulu11.43.55-ca-jdk11.0.9.1-linux_x64
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.