0

我试图从一个使用一些外部 jar 的 java 项目创建一个 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>

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

4

2 回答 2

4

先去掉冒号后Class-Path:匹配

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

然后我建议阅读

如何从 Ant或更好地使用Manifestclasspath创建 MANIFEST.MF 类路径

于 2009-06-14T15:35:32.700 回答
1

我认为您的 Class-Path 属性不应在build.xml.

尝试使用

jar tvf {jarname} 

从命令行,看看是否可以扩展您的 jar 文件,以及它是否包含您期望的内容(上面将简单地转储目录,但这是一个有用的检查)

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

于 2009-06-14T15:25:55.297 回答