Eclipseのコンパイラでのコンパイル
前の日記の通りAntのjavacタスクでEclipseのコンパイラを使うと、
コンパイルが通らないクラスでも、failonerror="false"のときは
クラスファイルが生成される。
興味本位で、どんなクラスファイルが生成されるのかを調べてみる。
まずは、ビルドスクリプト。
なんてことはない。
<?xml version="1.0" encoding="Shift_JIS"?>
<javac srcdir="src" destdir="bin" failonerror="false"
compiler="org.eclipse.jdt.core.JDTCompilerAdapter"/>
コンパイルが通らないソースはこんな感じ。
public class Test {
public static void main(String[] args) {
String str = null;
String str1 = 1; // Stringにintを入れてる
}
public int test() {
return 1;
}
}
このソースを、手元にあったEclipse3.1.2のコンパイラでコンパイルする。
Eclipseのコンパイラを使う時は、pluginフォルダにあるorg.eclipse.jdt.core_3.1.2.jarと、
これを解凍すると出てくるjdtCompilerAdapter.jarにパスを通して実行すればよい。
コンパイルエラーのメッセージをErrorでthrowするように、書き換えてるみたい。
public class Test
{public Test()
{
}public static void main(String args[])
{
throw new Error("Unresolved compilation problem: \n\tType mismatch: cannot convert from int to String\n");
}public int test()
{
return 1;
}
}
ふーん。
そいうや、テストケースでコンパイルエラーがあっても、Eclipse上ならば
実行できたりするなぁ。そして、上のようなErrorが出てたような。