4

Ant と javac 1.7 コンパイラを使用してコード ベースをコンパイルしようとしています。現在、コード ベースは 1.6 コンパイラを使用してコンパイルされていますが、1.7 コンパイラに切り替えると、次の 2 つの奇妙な点が発生します。

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。これにより、スレッド スタック サイズがデフォルトの 1MB に対して 16MB になります。実行可能な回避策になる可能性があります。

内部 API に関するメッセージは無関係であり、無視できます。

于 2012-07-19T16:25:12.510 に答える