2010-04-08 61 views
6

我有一个项目内置在eclipse中,依赖于第三方jar。我试图为蚂蚁生成一个合适的构建文件 - 使用内置的导出 - > ant构建文件功能作为起始块。Ant build classpath jar生成“在打开zip文件时出错”

当我运行的构建目标,我得到了以下错误:

[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 

而且整个构建文件(自动生成的日食)看起来是这样的: (注:上面总是错误引用第一在类路径中列出的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> 

(我知道有一个在这里蚀具体的东西,但我得到相同的结果有或没有它。)

我已经完成了你的旧谷歌搜索和拖网没有成功。

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

任何帮助将不胜感激。

干杯

+2

jar文件是否有效?你可以在WinZip或其他压缩工具中打开它吗? – VonC 2010-04-08 16:14:59

+0

感叹。我想到了,因为我已经移除了最初导致这个问题的第一批罐子(我甚至不相信我真的需要它们),问题刚刚转移到下一个罐子......好吧,这让我很怀疑系统性缺陷。 原来我确实在classpath上有很多垃圾罐。必须在某个时候搞砸了一个下载或什么东西。 无论如何,现在全部修好了。干杯 – 2010-04-09 07:56:28

+0

为什么不把你的评论移到答案然后接受它?这可能被证明对某个人来说是一个有用的问题,但目前它显示为“未答复”。 – 2011-06-24 12:18:01

回答

3

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

“叹了口气,我想到因为我删除了最初导致这个问题的第一个瓶子(我甚至不相信我真的需要它们),问题刚刚转移到下一个罐子。嗯,这让我怀疑系统性的错误,结果我确实在班级路径上有很多垃圾罐,必须在某个时候搞砸了一个下载或者什么东西,无论如何,现在都已经修好了,干杯“

+0

我有大量隐藏的罐子(。!79974!google-play-services.jar)导致这个问题,谢谢你的想法! – rob5408 2015-02-27 23:20:22

0

是否有任何在生成文件中复制语句<filterset/>?我遇到了一个问题,曾经是我在<copy> -ing“**/*”之后,并且在开发的最后,我想出了如何使用<filterset/><copy>

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

如果您的编译文件中有任何<filterset/>或类似的东西,请确保<exclude/>任何及所有二进制文件。

相关问题