Reputation: 4434
I am getting the below error while executing ant script for my JUNIT Class. My class compiles successfully. What can be the issue?.Why it is not able to find the class file?. Please guide.
My CLASSPATH environment variable:
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
ERROR:
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>
Upvotes: 0
Views: 1028
Reputation: 6738
Make sure you project has already created class files under build/classes directory of your project and modify your build.xml likes this;
<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>
Upvotes: 1
Reputation: 425
The ClassNotFoundException is thrown when the Java Virtual Machine (JVM) tries to load a particular class and the specified class cannot be found in the classpath. The ClassNotFoundException is a checked exception and thus, must be declared in a method or constructor’s throws clause.
How to deal with the ClassNotFoundException:
1.Verify that the name of the requested class is correct and that the appropriate .jar file exists in your classpath. If not, you must explicitly add it to your application’s classpath.
2.In case the specified .jar file exists in your classpath then, your application’s classpath is getting overriden and you must find the exact classpath used by your application.
3.In case the exception is caused by a third party class, you must identify the class that throws the exception and then, add the missing .jar files in your classpath.
Upvotes: 0