簡體   English   中英

Ant 使用了錯誤的 Java 版本

[英]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,則可以通過以下步驟實現:

  1. 右鍵單擊 ant 構建文件 ( build.xml ) 中的任務。

  2. 將鼠標懸停在“運行方式”上,單擊“外部工具配置...”。

  3. 在“參數”中添加以下內容:

     -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

javac標記使用以下 2 個屬性:

fork="yes"  
executable="full-path-to-the-javac-you-want-to-use".

可以在此處找到屬性的說明

使用所需的 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.

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