4

我正在尝试使用 ant 和 javac 1.7 编译器编译代码库。目前,代码库使用 1.6 编译器编译,但是当我切换到 1.7 编译器时,我得到以下两个奇怪的地方。

1)我收到警告:“警告:x 是内部专有 API,可能会在未来的版本中删除”其中 x 是内部专有 API 的一部分,但它引用的代码中的行没有引用 x(也没有引用x 给定文件中的任何位置)。这发生在几个地方,它引用的行位于注释块中。

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"

我尝试更改源和目​​标版本。我还尝试调整内存大小。它似乎没有帮助。

4

1 回答 1

3

(只需将我的评论复制到答案中,以防它被证明是答案。)

这很可能是一个 Java 7 编译器错误。但是,您可以通过javac使用诸如-Xss16M. 这使得线程堆栈大小为 16MB,而默认值为 1MB。这可能是一个可行的解决方法。

关于内部 API 的消息是不相关的,可以忽略。

于 2012-07-19T16:25:12.510 回答