atn 編譯java提示資源不足

來源:互聯網
上載者:User

標籤:

今天用ant編譯項目出現 [javac] 系統資源不足。的錯誤,如下

Buildfile: build.xml

-compile:
    [javac] Compiling 919 source files to E:/DSHR/dshr/WebContent/WEB-INF/classes
    [javac]
    [javac]
    [javac] 系統資源不足。
    [javac] 有關詳細資料,請參閱以下堆棧追蹤。
    [javac] java.lang.OutOfMemoryError: Java heap space

看來是記憶體不足,給設定大一點

    <target name="-compile">
       < javac srcdir="${srcdir}"  destdir="${builddir}" memorymaximumsize="500M" includes="**/*.java" classpathref="class_path">
            <compilerarg value="-Xlint:unchecked"/>            
        </javac>
    </target>
在編譯出現下面的錯誤
Buildfile: build.xml

-compile:
    [javac] Compiling 919 source files to E:/DSHR/dshr/WebContent/WEB-INF/classes
    [javac] Since fork is false, ignoring memoryMaximumSize setting.
    [javac]
    [javac]
    [javac] 系統資源不足。
    [javac] 有關詳細資料,請參閱以下堆棧追蹤。
    [javac] java.lang.OutOfMemoryError: Java heap space

Since fork is false, ignoring memoryMaximumSize setting.這句話應該是因為fork是false所以我設定的memoryMaxmumSize就被忽略了,繼續修改
    <target name="-compile">
       < javac srcdir="${srcdir}"  destdir="${builddir}" fork="true" memorymaximumsize="500M" includes="**/*.java" classpathref="class_path">
            <compilerarg value="-Xlint:unchecked"/>            
        </javac>
    </target>
再用ant編譯,通過了。

說明:在Ant的文檔中(預設為%ANT_HOME%/docs/manual/index.html)可以查看Ant Tasks 裡面列出了不少任務其中javac在Compile Tasks中
點擊javac可以查看更多的參數資訊

========================================================================================

在Ant中使用javac命令,拋出的java.lang.OutOfMemoryError錯誤和一般java應用拋出這個錯誤沒兩樣。當執行JDK的javac命令,都是調用%JAVA_HOME%\lib\tools.jar包中com.sun.tools.javac.main.Main類。     一般出現這個問題都是虛擬機器分配的記憶體不夠用。針對Ant,我調查了一番可以通過以下兩種方法解決:     1)在javac節點處設定fork屬性,同時指定memoryinitialsize、memorymaximumsize屬性。例:    Xml代碼  <javac fork="true" srcdir="${basedir}/src" destdir="${basedir}/build/classes" classpath="${project.classpath}" memoryinitialsize="256m" memorymaximumsize="256m"></javac>    說明:     -fork:沒有指定fork屬性(預設為false),javac命令將和ant在同一個進程中執行,同時javac被分配的記憶體只有64MB,如果指定fork屬性為true,javac命令將和ant不在同一個進程中執行,分配記憶體的大小將為memoryinitialsize、memorymaximumsize指定的大小。     -memoryinitialsize:javac佔用的最小記憶體。     -memorymaximumsize:javac佔用的最大記憶體。      2) 第二種方法不用修改build.xml檔案,通過在Ant執行時,指定虛擬機器的記憶體來解決,不過這樣ant和javac還將在同一個進程中執行,具體方法在[ANT_HOME]\bin\ant.bat檔案中增加set ANT_OPTS="-Xms256m -Xmx256m" 。      如果上面兩種方法都不能解決,那就只能是實體記憶體太小,那隻能有兩種方法解決這個問題,其一就是最簡單的方法擴大記憶體,其二將工程的源檔案分包編譯,不過這樣很麻煩,但也不乏是一種解決方案。

atn 編譯java提示資源不足

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.