简体   繁体   English

运行ant时java.lang.NoClassDefFoundError

[英]java.lang.NoClassDefFoundError when running ant

I'm using some external jar files in my program. 我在程序中使用了一些外部jar文件。 One of this jar is created by me. 这个罐子之一是我创造的。 When I'm using this jar file in an eclipse project it is working fine. 当我在Eclipse项目中使用此jar文件时,它工作正常。 But when I'm trying to do the same using ant it is showing NoClassDefFoundError. 但是,当我尝试使用ant进行相同操作时,它显示NoClassDefFoundError。 It is not been able to get the class inside my jar file. 无法在我的jar文件中获取该类。

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: 我的build.xml是这样的:

<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"/>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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