我尝试从 java 项目创建一个 jar 文件,该项目使用一些外部 jar。我创建了一个 lib 文件夹并将我需要的所有 jar 放在那里。
我通过将 lib 文件夹中的所有 jar 添加到构建路径来在 eclipse 中运行该项目,并且工作正常。
当我尝试使用 build.xml 中的 ant 创建 jar 时,看起来没问题,没有显示错误。
当我尝试运行 jar 时,收到消息“无效或损坏的 jarfile”。
在 build.xml 中: 我定义了用于编译的路径:
<path id="project.classpath">
<fileset dir="${lib}">
<include name="**/*.jar"/>
</fileset>
</path>
这是编译的目标:
<target name="compile" depends="init" description="compile the source " >
<!-- Compile the java code from ${src} into ${build} -->
<javac srcdir="${src}" destdir="${build}">
<classpath refid="project.classpath"/>
</javac>
</target>
这是制作 jar 文件的目标:
<target name="dist" depends="compile" description="generate the distribution" >
<mkdir dir="${dist}"/>
<!-- Put everything in ${build} into the MyProject-${DSTAMP}.jar file -->
<jar jarfile="${dist}/MyProject-${DSTAMP}.jar" basedir="${build}">
<manifest>
<attribute name="Main-Class" value="${main}" />
<attribute name="Class-Path:" value="lib/**/*.*"/>
</manifest>
<fileset dir="${src}" includes="images/**/*.*" />
</jar>
<echo file="${dist}/start.bat" message="java -jar MyProject-${DSTAMP}.jar" />
</target>
你能告诉我我做错了什么吗?
最佳答案
首先删除Class-Path:
后面的冒号进行匹配
<attribute name="Class-Path" value="lib/**/*.*"/>
那么我建议阅读
HOWTO Create MANIFEST.MF Classpath From Ant或者更好地使用 Manifestclasspath
关于java - jar 文件无效或损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/993007/