0

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>
sTg
  • 4,313
  • 16
  • 68
  • 115

2 Answers2

1

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>
Sai Ye Yan Naing Aye
  • 6,622
  • 12
  • 47
  • 65
0

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.

Imran
  • 429
  • 9
  • 23
  • I have updated my question with my classpath environment varialbe. Please let me know if i have missed anything. – sTg Oct 08 '14 at 05:09
  • **test.com.folder.service.ejb.sessio .SL_ServiceTest.class** is not found by your JVM, i don't think its related with any other jars. – Imran Oct 08 '14 at 05:12
  • Have you put your test classes in the classpath of your junit ant task? Hope this link will help http://stackoverflow.com/questions/6984478/junit-test-integrated-with-ant-failed-with-classnotfoundexception – Imran Oct 08 '14 at 05:20
  • No. Should i be adding the path of the classes where it is located in the classpath?. I just added the path of my class file in the classpath.Still not working. – sTg Oct 08 '14 at 05:23