web-dev-qa-db-ja.com

Antタスクを介してjavacを実行するときにコンパイラーの出力を確認するにはどうすればよいですか?

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.

問題は、コンパイラエラー出力の詳細を参照する方法がわからないことです...


役立つ構成要素はほとんどありません。

  • Ant 1.6.5
  • Windows 7 x64
  • Java 1.6.0_20 x32
  • Eclipseを介したターゲットの起動

SOには関連する回答済みの質問がいくつかありますが、実際にこの単純な質問に回答するものはありません。

20
sp00m

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"が行うことです。オフの場合、行番号は取得されません。

8
Daniel Kaplan

この問題は、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"/>
1

同じエラーメッセージが表示され、それ以上の情報はありませんでした。問題は、私の.jarファイルの1つが破損していたことです。その.jarファイルを置き換えることで問題は解決しました。

0
mekane84

属性を追加する必要があります debug

<javac srcdir="${myproject.src}" destdir="${myproject.class}" debug="true>
    <!-- ... -->
</javac>
0
VirtualTroll

これを使って

<javac srcdir="src" destdir="build/classes" debug="true">
            <classpath>
                <path refid="classpath"/>
            </classpath>
</javac>
0
S Kr