简体   繁体   中英

java.lang.NoClassDefFoundError when running ant

I'm using some external jar files in my program. One of this jar is created by me. When I'm using this jar file in an eclipse project it is working fine. But when I'm trying to do the same using ant it is showing NoClassDefFoundError. It is not been able to get the class inside my jar file.

My main method is like this:

import pckg.harness.SomeClass;

public class Main {
    public static void main(String[] args) 
{
        SomeClass someClass=new SomeClass();
        someClass.runSomeMethod();
    }
}

My build.xml is like:

<project basedir="." default="run" name="project">
  <property name="src" location="src" />
  <property name="libs" location="lib" />
  <path id="class.path">
      <pathelement location="${libs}/ExtJarOne.jar" />
      <pathelement location="${libs}/ExtJarTwo.jar" />
      <pathelement location="${libs}/ExtJarThree.jar" />
      <pathelement location="bin" />
  </path>

 <target name="compile">
    <javac classpathref="class.path" srcdir="${src}" destdir="./bin"/>
  </target> 

  <target name="jar"  depends="compile">
       <mkdir dir="jar"/>
    <jar destfile="./jar/Class.jar" basedir="./bin">
        <manifest>
            <attribute name="Main-Class" value="pckg.main.Main"/>
    </manifest>
        </jar>
    </target>

    <target name="run"  depends="jar">
        <java jar="./jar/Class.jar" fork="true"/>
    </target>

</project>

Now when I'm running my ant, I'm getting following error:

run:
     [java] Exception in thread "main" java.lang.NoClassDefFoundError: pckg/harn
ess/SomeClass
     [java]     at pckg.main.Main.main(Unknown Source)
     [java] Caused by: java.lang.ClassNotFoundException: pckg.harness.SomeClass
     [java]     at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
     [java]     at java.security.AccessController.doPrivileged(Native Method)
     [java]     at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
     [java]     at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
     [java]     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)

     [java]     at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
     [java]     ... 1 more
     [java] Java Result: 1

由于SomeClass不是您的Class.jar的一部分,因此您需要为java目标定义类路径:

<java jar="./jar/Class.jar" classpath="class.path" fork="true"/>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM