sTg
sTg

Reputation: 4434

ClassnotfoundException: While Executing Ant Script for JUNIT?

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

Answers (2)

Sai Ye Yan Naing Aye
Sai Ye Yan Naing Aye

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

Imran
Imran

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

Related Questions