这个构建文件有什么问题。它基本上包括两个jar文件AbsoluteLayout.jar和swing-layout-1.0.3.jar
<?xml version="1.0"?>
<project>
<property name="srcDir" location="src"/>
<property name="buildDir" location="build"/>
<property name="distDir" location="dist"/>
<property name="library" value="lib/"/>
<path id="classpath">
<fileset dir="${library}">
<!--<include name="**/*.jar"/>-->
<include name="*.jar"/>
</fileset>
</path>
<property name="myclasspath" refid="classpath"/>
<!-- Emit the property to the ant console -->
<echo message="Classpath = ${myclasspath}"/>
<target name="init">
<mkdir dir="${buildDir}"/>
<mkdir dir="${distDir}"/>
</target>
<target name="compile" depends="init">
<javac srcdir="${srcDir}" destdir="${buildDir}" classpathref="classpath"/>
</target>
<target name="dist" depends="compile">
<jar destfile="${distDir}/pro.jar" basedir="${buildDir}">
<manifest>
<attribute name="Built-By" value="${user.name}"/>
<attribute name="Main-Class" value="Main.Class"/>
</manifest>
</jar>
<!--<jar destfile="${distDir}/package-src.jar" basedir="${srcDir}"/>-->
</target>
<target name="clean">
<delete dir="${buildDir}"/>
<delete dir="${distDir}"/>
</target>
</project>
它说构建成功。当我在终端中运行 ant 文件时。但当 我运行 jar 文件,它给出以下错误:
Exception in thread "main" java.lang.NoClassDefFoundError: org/jdesktop/layout/GroupLayout$Group
Caused by: java.lang.ClassNotFoundException: org.jdesktop.layout.GroupLayout$Group
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
为什么它不包括类路径中的两个文件?
最佳答案
But when I run the jar file it is giving following error:
Exception in thread "main" java.lang.NoClassDefFoundError
这是一个运行时错误。运行时,jdesktop jar 在 jar 文件的类路径中不可用。
尝试
java -cp .;path_jdesktop.jar; yourclass.jar
您可以添加 classpath in the manifest file jar 文件的还有:
Class-Path: jar1-name jar2-name directory-name/jar3-name
所以类似:
<manifest>
<attribute name="Built-By" value="${user.name}"/>
<attribute name="Main-Class" value="Main.Class"/>
<attribute name="Class-Path" value="lib/jdesktop.jar"/>
</manifest>
运行 jar 文件时,请确保该 lib
目录中有一个 lib
目录和 jdesktop.jar
。
关于java - java ant build 的问题(未正确设置类路径),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6996393/