java - jar 文件无效或损坏

标签 java jar corrupt

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

相关文章:

Java ServiceLoader 解释

excel - 向 Excel 发送的大型 jasper 报告会导致文件损坏

php readfile() 和 fopen() 损坏/损坏下载

nsstring - 从服务器接收损坏的信息

java - Apache CXF 生成数字而不是字符串

java - 如何从Java 8 Streams获取Inputstream?

java - java中如何求一个数字的乘积和数字之和?

java - Hudson 没有意识到我在构建后执行了任何测试 - 有什么想法吗?

java - 如何使(JAR)文件能够访问应用程序所需的外部文件夹?

java - 如何获取正在运行的JAR文件的路径?