2012-07-17 110 views
4

我想使用ant和javac 1.7編譯器編譯代碼庫。 目前,代碼庫使用1.6編譯器進行編譯,但是當我切換到1.7編譯器時,我遇到以下兩個問題。 1)我得到一個警告:「警告:x是內部專有API,可能會在未來版本中刪除」,其中x是內部專有API的一部分,但其引用的代碼中的行不引用x(也不會在給定文件中的任何地方引用x)。這發生在幾個地方,它引用的行在註釋塊中。使用ant和Java 1.7編譯問題

2)編譯如下終止:

[javac] The system is out of resources. 
[javac] Consult the following stack trace for details. 
[javac] java.lang.StackOverflowError 
[javac]  at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:418) 
[javac]  at com.sun.tools.javac.comp.Attr.attribExpr(Attr.java:460) 
[javac]  at com.sun.tools.javac.comp.Attr.visitBinary(Attr.java:2053) 
[javac]  at com.sun.tools.javac.tree.JCTree$JCBinary.accept(JCTree.java:1565) 

這是我用於javac Ant腳本中的相關參數爲:

 source="1.6" 
     target="1.6" 
     debug="on" 
     debuglevel="lines,vars,source" 
     nowarn="on" 
     fork="yes" 
     executable="C:\Program Files\Java\jdk1.7.0_04\bin\javac" 
     memorymaximumsize="1500m" 

我試着更改源版本和目標版本。我也嘗試調整內存大小。它似乎沒有幫助。

+0

這幾乎肯定是一個編譯器錯誤。嘗試更新版本的Java 7? – 2012-07-17 20:04:27

+0

它說'stackoverflow'。不知道爲什麼,但你可以嘗試使用更大的堆棧... – coolcfan 2012-07-18 02:48:11

+0

@SeanOwen它只有1更新後,我還沒有發現任何已知的問題與編譯器通過谷歌搜索。不過,我會嘗試你的建議。 – Avrom 2012-07-19 14:09:38

回答

3

(只是複製我的一個答案評論,如果它原來是答案。)

這很可能是一個Java編譯器7的錯誤。但是,您可以通過運行javac來爲編譯器提供更多內存,其參數如-Xss16M。這使得線程堆棧大小爲16MB,默認值爲1MB。這可能是一種可行的解決方法。

關於內部API的消息是不相關的,可以忽略。

+1

具體來說,在ant中,在javac中指定以下標記將增加編譯器的堆棧大小。 '' – Avrom 2012-07-19 16:30:38