2012-02-16 10 views
1

EclipseとJUNITでJUNITテストを実行しようとしていますが、両方ともorg.h2.Driverクラスが見つからないと不平を言います。H2データベースorg.h2.Driver ClassNotFoundException

私は私のクラスパスに、それについての証明のためのh2-1.3.164.jarここにクラスパスは、システムプロパティのjava.class.path

c:\trasferer\build; C:\Program Files (x86)\IBM\IMShared\plugins\org.junit4_4.3.1\junit.jar; c:\trasferer\lib\ojdbc6.jar; c:\trasferer\lib\sqljdbc4.jar; c:\trasferer\lib-test\h2-1.3.164.jar; c:\trasferer\lib-test\junit-4.8.2.jar; c:\trasferer\lib-test\log4j-1.2.14.jar; c:\trasferer\lib-test\TestUtils.jar; c:\trasferer\lib-test\dbunit-2.4.8.jar; c:\trasferer\lib-test\slf4j-api-1.5.5.jar; c:\trasferer\lib-test\slf4j-log4j12-1.5.5.jar;

からのものであり、私はクラスorg.h2を見つけたことができています。私がeclipseで開くとh2-1.3.164.jarのドライバ。ここでは、クラスパス

<path id="lib.classpath"> 
    <fileset dir="./lib" includes="*.jar" /> 
</path> 

<path id="test.classpath"> 
    <fileset dir="lib" includes="*.jar" /> 
    <fileset dir="lib-test" includes="*.jar" /> 
    <pathelement location="${dest}" /> 
    <pathelement location="${test-dest}" /> 
</path> 

<target name="run-test" depends="init-test,compile,compile-test"> 
    <property name="classPathToUse" refid="test.classpath" /> 
    <echo>Using classpath: "${classPathToUse}"</echo> 
    <junit failureProperty="test.failure" fork="on" forkmode="once" outputtoformatters="true" printsummary="on" showoutput="true"> 
     <jvmarg value="-Xmx512m" /> 
     <jvmarg value="-XX:MaxPermSize=128m" /> 
     <jvmarg value="-Duser.timezone=GMT" /> 
     <jvmarg value="-Dexternal-properties=${test.properties}" /> 
     <classpath refid="test.classpath" /> 
     <formatter type="brief" usefile="false" /> 
     <formatter type="xml" /> 
     <batchtest todir="test-results"> 
      <fileset dir="${test-dest}" includes="**/*Test.class" /> 
     </batchtest> 
    </junit> 
    <fail message="test failed" if="test.failure" /> 
</target> 

「を構築」のためのテストとANTタスクを実行し、ため Antタスクは、スタックトレースです

 

    [junit] ------------- Standard Error ----------------- 
    [junit] log4j:ERROR Could not find value for key log4j.appender.CONSOLE 
    [junit] log4j:ERROR Could not instantiate appender named "CONSOLE". 
    [junit] log4j:WARN No appenders could be found for logger (org.dbunit.DatabaseTestCase). 
    [junit] log4j:WARN Please initialize the log4j system properly. 
    [junit] ------------- ---------------- --------------- 
    [junit] Testcase: testBuildLiityntapisteSQL(org.xyz.rigistry.manager.XXServiceImplTest):  Caused an ERROR 
    [junit] org.h2.Driver 
    [junit] java.lang.ClassNotFoundException: org.h2.Driver 
    [junit]  at java.lang.Class.forName(Class.java:136) 
    [junit]  at org.dbunit.JdbcDatabaseTester.(JdbcDatabaseTester.java:104) 
    [junit]  at org.dbunit.PropertiesBasedJdbcDatabaseTester.(PropertiesBasedJdbcDatabaseTester.java:68) 
    [junit]  at org.dbunit.DBTestCase.newDatabaseTester(DBTestCase.java:70) 
    [junit]  at org.dbunit.DatabaseTestCase.getDatabaseTester(DatabaseTestCase.java:109) 
    [junit]  at org.dbunit.DatabaseTestCase.setUp(DatabaseTestCase.java:151) 
    [junit]  at fi.transferer.junit.AbstractDatabaseTestCase.setUp(Unknown Source) 
    [junit]  at fi.transferer.junit.BasicDatabaseTestCase.setUp(Unknown Source) 
 

ので、誰かが、してください何が起こっているか教えてください。

+0

スタックを投稿できますか? –

+0

jarがすでにEclipseのクラスパスにある場合は、cleanとbuildを実行してみてください。それは問題を解決するかもしれない。 –

答えて

2

junitを実行するANTビルドファイルセクションを投稿できますか? CLASSPATH環境変数の使用をオフに切り替えるオプション....環境変数に依存


は、あなたのビルドが少ないポータブルになり、私の経験で、あなたのJavaの依存関係を管理するための非常に柔軟性のない方法ですがあります。私はあなたがすでに同じライブラリの複数のバージョン(junitとlog4jの2つのコピー)の問題にぶち当たっていることに気付きました。

<path id="compile.path"> 
    <fileset dir="c:\trasferer\lib" includes="*.jar"/> 
</path> 

<path id="test.path"> 
    <path refid="compile.path"/> 
    <fileset dir="c:\trasferer\lib-test" includes="*.jar"/> 
</path> 

これらのクラスパスは、その後classpathrefを使用して、さまざまなAntタスクで使用することができます:

私は次のようにのbuild.xmlファイルの先頭にクラスパスを宣言するようにビルドを変更することを示唆しています属性:

<javac srcdir="${src}" 
     destdir="${build}" 
     classpathref="compile.path" 
     debug="on" 
     source="1.4" 
    /> 

とJUnitは(コンパイルされたクラスのディレクトリを追加するときに便利)、ネストされたクラスパス能力を有する:

<junit printsummary="yes" haltonfailure="yes"> 
    <classpath> 
    <pathelement location="${build.tests}"/> 
    <path refid="test.path"/> 
    </classpath> 

    <formatter type="plain"/> 

    <test name="my.test.TestCase" haltonfailure="no" outfile="result"> 
    <formatter type="xml"/> 
    </test> 

    <batchtest fork="yes" todir="${reports.tests}"> 
    <fileset dir="${src.tests}"> 
     <include name="**/*Test*.java"/> 
     <exclude name="**/AllTests.java"/> 
    </fileset> 
    </batchtest> 
</junit> 
+0

自分のパスに複数のjunitとlog4jライブラリがあることに気づいてくれてありがとう、私はそれらを整理して、私の問題を解決するならあなたの投稿を回答として受け入れる – Timii

3

Eclipseのプロジェクトビルドパスにこれらのjarファイルを追加するだけです。

関連する問題