我尝试从java项目创建一个jar文件,该项目使用一些外部jar。我创建了一个lib文件夹并放置了我需要的所有罐子。
我在eclipse中运行项目,将lib文件夹中的所有jar文件添加到Build Path中,它运行正常。
当我尝试使用build.xml中的ant创建jar时,看起来没问题,没有显示错误。
当我尝试运行jar时,收到消息“Invalid or corupt 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>
你能告诉我我做错了什么吗?
答案 0 :(得分:4)
首先删除Class-Path:
后的冒号以匹配
<attribute name="Class-Path" value="lib/**/*.*"/>
然后我建议阅读
使用HOWTO Create MANIFEST.MF Classpath From Ant答案 1 :(得分:1)
我认为您的Class-Path属性不应在build.xml
中指定尾随冒号。
尝试使用
jar tvf {jarname}
从命令行,看看是否可以扩展你的jar文件,以及它是否包含你期望的内容(上面只是转储目录,但是是一个有用的检查)
编辑:已更改以反映以下反馈