Ant タスクを介してjavac
を実行するときにコンパイラーの出力を確認するための明確に説明された簡単な方法はありますか?
ここに私のjavac
Antタグがあります:
<javac srcdir="${myproject.src}" destdir="${myproject.class}">
<!-- ... -->
</javac>
ここに私が得る唯一のエラーメッセージがあります:
/path/to/build.xml:42: Compile failed; see the compiler error output for details.
問題は、コンパイラエラー出力の詳細を参照する方法がわからないことです...
役立つ構成要素はほとんどありません。
SOには関連する回答済みの質問がいくつかありますが、実際にこの単純な質問に回答するものはありません。
compile
タグを許可する特定のライブラリを追加できません。verbose="true"
属性を探していると思います。
詳細な出力をコンパイラに要求します。デフォルトはnoです。
あなたはすでにこれがあなたのエラーの原因を印刷しないことをコメントで述べました。あなたの状況では何か他のことが起こっていると思います。サンプルプロジェクトがあり、いずれにしてもエラーの原因が出力されました。 verbose="false"
の出力は次のとおりです。
[mkdir] Created dir: C:\Projects\MavenSandbox\target\classes
[javac] C:\Projects\MavenSandbox\mavensandbox.xml:284: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
[javac] Compiling 3 source files to C:\Projects\MavenSandbox\target\classes
[javac] C:\Projects\MavenSandbox\src\main\Java\com\sandbox\Sandbox.Java:8: error: cannot find symbol
[javac] System.out.prinln("Hello, I\'m the best!");
[javac] ^
[javac] symbol: method prinln(String)
[javac] location: variable out of type PrintStream
[javac] 1 error
奇妙でコード固有の何かが悪いエラーメッセージを引き起こしています。エラーを再現するサンプルプロジェクトを作成できますか?
あなたが述べたように、debug="true"
はあなたが探している属性ではありません。
ソースをデバッグ情報とともにコンパイルする必要があるかどうかを示します。デフォルトはオフです。 offに設定すると、-g:noneは、それをサポートするコンパイラーのコマンドラインで渡されます(他のコンパイラーでは、コマンドライン引数は使用されません)。 trueに設定すると、debuglevel属性の値によってコマンドライン引数が決まります。
スタックトレースを取得し、行番号が含まれていることを知っていますか?それがdebug="true"
が行うことです。オフの場合、行番号は取得されません。
この問題は、Javaコンパイラ自体が起動できない場合にも発生します。例として、定義されたヒープが大きすぎる場合。 IntellijのJava2タスクは情報を表示します
Using external javac compiler
Compilation arguments:
...
'-J-Xmx1600m'
...
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.
私の場合、build.xmlファイルの原因:
<property name="compiler.args" value="-J-Xmx1600m"/>
同じエラーメッセージが表示され、それ以上の情報はありませんでした。問題は、私の.jarファイルの1つが破損していたことです。その.jarファイルを置き換えることで問題は解決しました。
属性を追加する必要があります debug
<javac srcdir="${myproject.src}" destdir="${myproject.class}" debug="true>
<!-- ... -->
</javac>
これを使って
<javac srcdir="src" destdir="build/classes" debug="true">
<classpath>
<path refid="classpath"/>
</classpath>
</javac>