Java H2数据库org.H2.Driver类NotFoundException

Java H2数据库org.H2.Driver类NotFoundException,java,eclipse,ant,junit4,h2,Java,Eclipse,Ant,Junit4,H2,我试着用eclipse和ANT运行JUNIT测试,他们都抱怨找不到org.h2.Driver类 我的类路径中有h2-1.3.164.jar,为了证明这一点,这里是来自系统属性java.class.path的类路径 c:\trasferer\build; C:\ProgramFilesx86\IBM\IMShared\plugins\org.junit4\u 4.3.1\junit.jar; c:\trasferer\lib\ojdbc6.jar; c:\trasferer\lib\sqljdb

我试着用eclipse和ANT运行JUNIT测试,他们都抱怨找不到org.h2.Driver类

我的类路径中有h2-1.3.164.jar,为了证明这一点,这里是来自系统属性java.class.path的类路径

c:\trasferer\build; C:\ProgramFilesx86\IBM\IMShared\plugins\org.junit4\u 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;

当我用eclipse打开类org.h2.Driver时,我可以从h2-1.3.164.jar中找到它。 用于运行测试的Ant任务和用于构建类路径的Ant任务

<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>

有人能告诉我发生了什么吗?

我认为您应该简单地将这些JAR添加到Eclipse中的项目构建路径中。

我认为您应该简单地将这些JAR添加到Eclipse中的项目构建路径中。

您可以发布运行junit的ANT构建文件部分吗?有一些选项可以关闭CLASSPATH环境变量的使用

依赖环境变量会降低构建的可移植性,根据我的经验,这是一种非常不灵活的管理java依赖关系的方法。我注意到您已经遇到了同一个库的多个版本的问题—junit和log4j的两个副本

我建议修改您的构建,在build.xml文件顶部声明类路径,如下所示:

<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任务中使用这些类路径:

<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>

您可以发布运行junit的ANT构建文件部分吗?有一些选项可以关闭CLASSPATH环境变量的使用

依赖环境变量会降低构建的可移植性,根据我的经验,这是一种非常不灵活的管理java依赖关系的方法。我注意到您已经遇到了同一个库的多个版本的问题—junit和log4j的两个副本

我建议修改您的构建,在build.xml文件顶部声明类路径,如下所示:

<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任务中使用这些类路径:

<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>

可以发布得到的堆栈吗?如果jar已经存在于eclipse类路径中,请尝试进行清理和构建。它可能会解决这个问题。你能发布你得到的堆栈吗?如果jar已经存在于eclipse类路径中,请尝试进行清理和构建。这可能会解决问题。感谢您注意到我的路径中有多个junit和log4j库,我将对它们进行分类,如果它解决了我的问题,我将接受您的帖子作为答案。感谢您注意到我的路径中有多个junit和log4j库,我会把它们整理出来,如果它解决了我的问题,我会接受你的帖子作为答案