【问题标题】:Ant build classpath jar generates "error in opening zip file"Ant 构建类路径 jar 生成“打开 zip 文件时出错”
【发布时间】:2012-02-06 05:48:50
【问题描述】:

我有一个在 Eclipse 中构建的项目,它依赖于 3rd 方 jar。我正在尝试为 ant 生成合适的构建文件 - 使用 eclipse 内置的 export->ant 构建文件功能作为起始块。

当我运行构建目标时,出现以下错误:

[javac] error: error reading /base/repo/FabTrace/lib/apache/geronimo/specs/geronimo-j2ee-management_1.0_spec/1.0/geronimo-j2ee-management_1.0_spec-1.0.jar; error in opening zip file

整个构建文件(由 eclipse 自动生成)如下所示: (注意:上面的错误总是引用类路径中列出的第一个 jar)

<project basedir="." default="build" name="FabTrace">
    <property environment="env"/>
    <property name="ECLIPSE_HOME" value="/opt/apps/eclipse"/>
    <property name="debuglevel" value="source,lines,vars"/>
    <property name="target" value="1.5"/>
    <property name="source" value="1.5"/>
    <path id="JUnit 4.libraryclasspath">
        <pathelement location="${ECLIPSE_HOME}/plugins/org.junit4_4.5.0.v20090824/junit.jar"/>
        <pathelement location="${ECLIPSE_HOME}/plugins/org.hamcrest.core_1.1.0.v20090501071000.jar"/>
    </path>
    <path id="FabTrace.classpath">
        <pathelement location="bin"/>
        <pathelement location="lib/apache/geronimo/specs/geronimo-j2ee-management_1.0_spec/1.0/geronimo-j2ee-management_1.0_spec-1.0.jar"/>
        <pathelement location="lib/apache/geronimo/specs/geronimo-jms_1.1_spec/1.0/geronimo-jms_1.1_spec-1.0.jar"/>
        <pathelement location="lib/commons-collections/commons-collections/3.2/commons-collections-3.2.jar"/>
        <pathelement location="lib/commons-io/commons-io/1.4/commons-io-1.4.jar"/>
        <pathelement location="lib/commons-lang/commons-lang/2.1/commons-lang-2.1.jar"/>
        <pathelement location="lib/commons-logging/commons-logging/1.1/commons-logging-1.1.jar"/>
        <pathelement location="lib/commons-logging/commons-logging-api/1.1/commons-logging-api-1.1.jar"/>
        <pathelement location="lib/javax/activation/activation/1.1/activation-1.1.jar"/>
        <pathelement location="lib/javax/jms/jms/1.1/jms-1.1.jar"/>
        <pathelement location="lib/javax/mail/mail/1.4/mail-1.4.jar"/>
        <pathelement location="lib/javax/xml/bind/jaxb-api/2.1/jaxb-api-2.1.jar"/>
        <pathelement location="lib/javax/xml/stream/stax-api/1.0-2/stax-api-1.0-2.jar"/>
        <pathelement location="lib/junit/junit/4.4/junit-4.4.jar"/>
        <pathelement location="lib/log4j/log4j/1.2.15/log4j-1.2.15.jar"/>
        <pathelement location="lib/apache/camel/camel-jms-2.0-M1.jar"/>
        <pathelement location="lib/spring/spring-2.5.6.jar"/>
        <pathelement location="lib/apache/camel/camel-bundle-2.0-M1.jar"/>
        <pathelement location="lib/backport-util-concurrent/backport-util-concurrent-3.1.jar"/>
        <pathelement location="lib/commons-pool/commons-pool-1.4.jar"/>
        <pathelement location="lib/apache/camel/camel-activemq-1.1.0.jar"/>
        <pathelement location="lib/apache/activemq/activemq-camel-5.2.0.jar"/>
        <pathelement location="lib/jencks/jencks-2.2-all.jar"/>
        <pathelement location="lib/jencks/jencks-amqpool-2.2.jar"/>
        <pathelement location="lib/activemq/apache-activemq-5.3.1/activemq-all-5.3.1.jar"/>
        <pathelement location="lib/activemq/apache-activemq-5.3.1/lib/optional/xbean-spring-3.6.jar"/>
        <pathelement location="lib/activemq/apache-activemq-5.3.1/lib/activemq-core-5.3.1.jar"/>
        <pathelement location="lib/activemq/apache-activemq-5.3.1/lib/camel-jetty-2.2.0.jar"/>
        <pathelement location="lib/activemq/apache-activemq-5.3.1/lib/web/jetty-6.1.9.jar"/>
        <pathelement location="lib/activemq/apache-activemq-5.3.1/lib/web/jetty-util-6.1.9.jar"/>
        <pathelement location="lib/activemq/apache-activemq-5.3.1/lib/web/jetty-xbean-6.1.9.jar"/>
        <pathelement location="lib/activemq/apache-activemq-5.3.1/lib/optional/activemq-optional-5.3.1.jar"/>
        <pathelement location="lib/activemq/apache-activemq-5.3.1/lib/web/geronimo-servlet_2.5_spec-1.2.jar"/>
        <pathelement location="lib/activemq/apache-activemq-5.3.1/lib/optional/spring-beans-2.5.6.jar"/>
        <pathelement location="lib/activemq/apache-activemq-5.3.1/lib/optional/spring-context-2.5.6.jar"/>
        <pathelement location="lib/activemq/apache-activemq-5.3.1/lib/optional/spring-core-2.5.6.jar"/>
        <path refid="JUnit 4.libraryclasspath"/>
    </path>
    <target name="init">
        <mkdir dir="bin"/>
        <copy includeemptydirs="false" todir="bin">
            <fileset dir="src/main/java">
                <exclude name="**/*.launch"/>
                <exclude name="**/*.java"/>
            </fileset>
        </copy>
        <copy includeemptydirs="false" todir="bin">
            <fileset dir="src/test/java">
                <exclude name="**/*.launch"/>
                <exclude name="**/*.java"/>
            </fileset>
        </copy>
        <copy includeemptydirs="false" todir="bin">
            <fileset dir="config">
                <exclude name="**/*.launch"/>
                <exclude name="**/*.java"/>
            </fileset>
        </copy>
    </target>
    <target name="clean">
        <delete dir="bin"/>
    </target>
    <target depends="clean" name="cleanall"/>
    <target depends="build-subprojects,build-project" name="build"/>
    <target name="build-subprojects"/>
    <target depends="init" name="build-project">
        <echo message="${ant.project.name}: ${ant.file}"/>
        <javac debug="true" debuglevel="${debuglevel}" destdir="bin" source="${source}" target="${target}">
            <src path="src/main/java"/>
            <classpath refid="FabTrace.classpath"/>
        </javac>
        <javac debug="true" debuglevel="${debuglevel}" destdir="bin" source="${source}" target="${target}">
            <src path="src/test/java"/>
            <classpath refid="FabTrace.classpath"/>
        </javac>
        <javac debug="true" debuglevel="${debuglevel}" destdir="bin" source="${source}" target="${target}">
            <src path="config"/>
            <classpath refid="FabTrace.classpath"/>
        </javac>
    </target>

</project>

(我知道这里有 eclipse 特定的东西。但不管有没有它,我都会得到相同的结果。)

我已经完成了旧的谷歌搜索并没有成功。

我可以确认所有的罐子确实存在。我也尝试过从命令行和 sudo - 同样的结果。

任何帮助将不胜感激。

干杯

【问题讨论】:

  • jar文件有效吗?可以用 WinZip 或其他压缩工具打开吗?
  • 叹息。我想这是因为我删除了最初导致这个问题的第一个罐子(我什至不相信我真的需要它们了)并且问题只是转移到下一个罐子......好吧,这让我怀疑的系统性故障。事实证明我确实在类路径上有很多垃圾罐。一定在某个时候搞砸了下载或其他东西。无论如何,现在一切都解决了。干杯
  • 为什么不将您的评论移至答案然后接受它?这可能对某人来说是一个有用的问题,但目前它显示为“未回答”。
  • @AlastairBrayne 面临完全相同的问题。到目前为止没有任何效果。

标签: eclipse ant build zip


【解决方案1】:

根据 Martin Clayton 的建议,我之前的评论被复制到下面作为答案。

“叹息。我想这是因为我已经移除了最初导致这个问题的第一个罐子(我什至不相信我真的需要它们了)并且问题只是转移到了下一个罐子......好吧,这让我怀疑是系统性错误。事实证明,我确实在类路径上确实有很多垃圾罐。一定是在某个时候搞砸了下载或其他什么。无论如何,现在一切都修复了。干杯”

【讨论】:

  • 我有很多隐藏的 jars (.!79974!google-play-services.jar) 导致了这个问题,谢谢你的想法!
【解决方案2】:

您的构建文件中的任何复制语句中是否有&lt;filterset/&gt;?我曾经遇到过一个问题,我是&lt;copy&gt;-ing "**/*",在开发结束时我想出了如何将&lt;filterset/&gt;&lt;copy&gt; 一起使用。

长话短说,文本替换完美无缺,但是“**/*”路径中的任何二进制文件、可执行文件或 .jar 都被完全破坏了。它们不是以二进制模式打开文件,而是以文本模式打开,然后以文本模式保存。

如果您的构建文件中确实有&lt;filterset/&gt; 或类似的东西,请确保&lt;exclude/&gt; 任何和所有二进制文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-15
    • 1970-01-01
    • 1970-01-01
    • 2012-04-16
    • 2012-05-31
    • 2017-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多