我在为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>
答案 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文件。