Apache Antでのビルド実行時に、クラスパスに含まれているはずのライブラリで実装されているメソッドが見つからず、コンパイルエラーとなります。
###発生している問題・エラーメッセージ
以前、JUnit 3を用いていたテストコードを、JUnit 4を用いるように修正したところ、そのJUnit 4のメソッドが見つからずにエラーが発生するようになりました。なお、Eclipse上ではコンパイルエラーとならず、テストもパスします。
なお、同じクラス内の下記以外の箇所でも同じ名前のメソッド(第1引数でreasonの文字列をとるものを含む)を使用しており、全てエラーとなっています。
C:\...\ExampleTest.java:123: シンボルを見つけられません。 シンボル: メソッド assertThat(boolean,org.hamcrest.Matcher<boolean>) 場所 : mypackage.ExampleTest の クラス assertThat(d.exists(), is(false)); ^
###該当のソースコード
実際のコードとは異なりますが、エラーとなっている部分は下記のコードとほぼ同じものになります。
- テストコード
Java
1import static org.junit.Assert.assertThat; 2import static org.hamcrest.CoreMatchers.is; 3 4import java.io.File; 5 6import org.junit.Test; 7 8public class ExampleTest { 9 @Test 10 public void test() { 11 File d = new File("C:\\Users\\user\\dir"); 12 assertThat(d.exists(), is(false)); 13 } 14}
- build.xml
XML
1<path id="library"> 2 <fileset dir="${dir1}"> 3 <include name="**/*.jar" /> 4 </fileset> 5 <fileset dir="${dir2}"> 6 <include name="**/*.jar" /> 7 </fileset> 8 <fileset dir="${dir3}"> 9 <include name="**/*.jar" /> 10 </fileset> 11 <fileset dir="${dir4}"> 12 <include name="**/*.jar" /> 13 </fileset> 14</path> 15 16<path id="classpath.test"> 17 <path refid="library" /> 18 <pathelement location="${dir.metadata}" /> 19</path> 20 21<path id="testpath"> 22 <pathelement location="${test.src}" /> 23</path> 24 25<target name="buildtest"> 26 <javac destdir="${destdir}" encoding="UTF-8" debug="true"> 27 <classpath refid="classpath.test" /> 28 <src refid="testpath"> 29 </javac> 30</target>
※ ${XXX}
の形式で記載しているディレクトリは全て存在しています。
###試したこと
- クラスパスにJUnitのjarファイルが含まれているかを確認(Ant実行時にverboseオプションを付加して確認しましたが、含まれていました)
- JUnitのjarファイルをクラスパスの先頭に移動する(結果は変わりませんでした)
- 最新版のAnt(1.9.7)でビルド(結果は変わりませんでした)
- 競合が考えられるライブラリ(Hamcrest)をクラスパスから除外(上記エラーメッセージのみの解消を確認するために試しましたが、解消されませんでした)
###補足情報(言語/FW/ツール等のバージョンなど)
- JDKバージョン: 1.6.0_45
- Antバージョン: 1.9.2
- Eclipseバージョン: 4.4 Luna
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/05/17 08:24