2012-07-17 171 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