プログラムでいくつかの外部 jar ファイルを使用しています。この jar の 1 つが私によって作成されます。このjarファイルをEclipseプロジェクトで使用している場合、正常に動作しています。しかし、ant を使用して同じことをしようとすると、NoClassDefFoundError が表示されます。私のjarファイル内でクラスを取得できませんでした。
私の主な方法は次のとおりです。
import pckg.harness.SomeClass;
public class Main {
public static void main(String[] args)
{
SomeClass someClass=new SomeClass();
someClass.runSomeMethod();
}
}
私の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>
アリを実行していると、次のエラーが発生します。
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