ClassnotfoundException:为JUNIT执行Ant脚本时?

时间:2014-10-08 04:56:19

标签: java ant junit

我在为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>

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

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

如何处理 ClassNotFoundException

  

1.验证所请求的类的名称是否正确,以及类路径中是否存在相应的.jar文件。如果没有,你必须   显式地将它添加到应用程序的类路径中。

     

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

     

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