【问题标题】:ClassnotfoundException: While Executing Ant Script for JUNIT?ClassnotfoundException:为 JUNIT 执行 Ant 脚本时?
【发布时间】:2014-10-08 04:56:18
【问题描述】:

为我的 JUNIT 类执行 ant 脚本时出现以下错误。我的课程编译成功。可能是什么问题?为什么找不到类文件?请指导。

我的 CLASSPATH 环境变量:

C:\Program Files\Java\jdk1.6.0_34\lib;D:\HR\jboss-5.0.0.GA\lib\endorsed;D:\HR\jboss-5.0.0.GA\lib;D:\HR\jboss-5.0.0.GA\client;D:\HR\apache-ant-1.6.5\lib;C:\Program Files\Java\jdk1.6.0_34\bin

错误:

junit-report:
   [delete] Deleting directory D:\MyProject\folder\src\html-report
    [mkdir] Created dir: D:\MyProject\Test\src\html-report
    [mkdir] Created dir: D:\MyProject\Test\src\html-report\Junit
    [junit] Testsuite: test.com.folder.service.ejb.session.SL_ServiceTest
class
    [junit] Tests run: 1, Failures: 0, Errors: 1, Time elapsed: 0 sec

    [junit]     Caused an ERROR
    [junit] test.com.folder.service.ejb.session.SL_ServiceTest
    [junit] java.lang.ClassNotFoundException: test.com.folder.service.ejb.sessio
.SL_ServiceTest.class
    [junit]     at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    [junit]     at java.security.AccessController.doPrivileged(Native Method)
    [junit]     at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    [junit]     at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    [junit]     at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    [junit]     at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    [junit]     at java.lang.Class.forName0(Native Method)
    [junit]     at java.lang.Class.forName(Class.java:247)

    [junit] Test test.com.folder.service.ejb.session.SL_ServiceTest
FAILED

BUILD SUCCESSFUL
Total time: 0 seconds

build.xml

<project name="MyProject" default="junit-report" basedir=".">
  <!-- Sets the property variables to point to respective directories -->
  <property name="junit-xml-dir" value="${basedir}/test-output/junitreports"/>
  <property name="report-dir" value="${basedir}/html-report" />

  <!-- Ant target to generate html report -->
  <target name="junit-report">
    <!-- Delete and recreate the html report directories -->
    <delete dir="${report-dir}" failonerror="false"/>
    <mkdir dir="${report-dir}" />
    <mkdir dir="${report-dir}/Junit" />
    <!-- Ant task to generate the html report.
    todir - Directory to generate the output reports

    fileset - Directory to look for the junit xml reports.

    report - defines the type of format to be generated.
      Here we are using "noframes" which generates a single html report.
     -->
         <junit>
        <classpath>
            <pathelement location="./junit-4.8.2.jar"/>
            <pathelement location="./ant-junit4.jar"/>
        </classpath>
        <formatter type="plain" usefile="false" /> <!-- to screen -->
        <formatter type="plain" /> <!-- to file -->
        <test name = "test.com.folder.service.ejb.session.SL_ServiceTest" todir="."/>
    </junit>
  </target>
</project>

【问题讨论】:

    标签: java ant junit


    【解决方案1】:

    确保您的项目已经在项目的 build/classes 目录下创建了类文件,并像这样修改您的 build.xml;

     <project name="MyProject" default="junit-report" basedir=".">
        <property name="dir.build" value="build"/>
        <!-- Do something -->
        <path id="classpath.project">
          <pathelement path="${dir.build}"/>
        </path>
        <junit>   
           <classpath refid="classpath.project"/>
             <pathelement location="./junit-4.8.2.jar"/>
             <pathelement location="./ant-junit4.jar"/>
           </classpath>
           <formatter type="plain" usefile="false" /> <!-- to screen -->
           <formatter type="plain" /> <!-- to file -->
           <test name = "test.com.folder.service.ejb.session.SL_ServiceTest" todir="."/>
        </junit>
    
       </project>
    

    【讨论】:

      【解决方案2】:

      当 Java 虚拟机 (JVM) 尝试加载特定类并且在 类路径 中找不到指定的类时,将引发 ClassNotFoundExceptionClassNotFoundException 是一个检查异常,因此必须在方法或构造函数的 throws 子句中声明。

      ClassNotFoundException如何处理:

      1.验证请求的类的名称是否正确,并且在您的类路径中存在适当的 .jar 文件。如果没有,你必须 将其显式添加到应用程序的类路径中。

      2.如果指定的 .jar 文件存在于您的类路径中,那么您的应用程序的类路径将被覆盖,您必须找到 您的应用程序使用的确切类路径。

      3.如果异常是由第三方类引起的,则必须识别出引发异常的类,然后添加缺少的 .jar 文件在你的类路径中。

      【讨论】:

      • 我已经用我的类路径环境变量更新了我的问题。如果我遗漏了什么,请告诉我。
      • test.com.folder.service.ejb.sessio .SL_ServiceTest.class 没有被您的 JVM 找到,我认为它与任何其他 jars 无关。
      • 你有没有把你的测试类放在你的 junit ant 任务的类路径中?希望此链接对stackoverflow.com/questions/6984478/… 有所帮助
      • 没有。我应该添加它位于类路径中的类的路径吗?我刚刚在类路径中添加了我的类文件的路径。仍然无法正常工作。
      猜你喜欢
      • 1970-01-01
      • 2014-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多