jarfile无效或损坏

时间:2009-06-14 15:21:53

标签: java jar corrupt

我尝试从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>

你能告诉我我做错了什么吗?

2 个答案:

答案 0 :(得分:4)

首先删除Class-Path:后的冒号以匹配

<attribute name="Class-Path" value="lib/**/*.*"/>

然后我建议阅读

使用HOWTO Create MANIFEST.MF Classpath From Ant

Manifestclasspath或更好

答案 1 :(得分:1)

我认为您的Class-Path属性不应在build.xml中指定尾随冒号。

尝试使用

jar tvf {jarname} 
从命令行

,看看是否可以扩展你的jar文件,以及它是否包含你期望的内容(上面只是转储目录,但是是一个有用的检查)

编辑:已更改以反映以下反馈