2010-04-08 44 views
6

Tengo un proyecto creado en eclipse con dependencias de jar de terceros. Estoy tratando de generar un archivo de compilación adecuado para ant-usando eclipses incorporada export-> ant buildfile feature como un bloque de inicio.Ant build classpath jar genera "error al abrir archivo zip"

Cuando ejecuto el destino de generación me sale el siguiente error:

[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 

Y todo el fichero de construcción (auto-generado por el eclipse) tiene el siguiente aspecto: (Nota: el error anterior siempre hace referencia a la primera tarro que aparece en la ruta de clase)

<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> 

(sé que hay cosas específicas eclipsar aquí. Pero consigo los mismos resultados con o sin él.)

He hecho búsquedas antiguas en Google y navegué sin éxito.

Puedo confirmar que todos los frascos realmente existen. También lo intenté desde la línea de comandos y como sudo, de nuevo, con los mismos resultados.

Cualquier ayuda sería muy apreciada.

Saludos

+2

Es el archivo jar válido? ¿Puedes abrirlo en WinZip u otra herramienta de compresión? – VonC

+0

suspiro. Me lo había imaginado porque había eliminado los primeros frascos que originalmente causaron este problema (ni siquiera estaba convencido de que realmente los necesitara) y el problema simplemente se movió al siguiente frasco ... bueno, eso me hizo sospechar de una falla sistémica. Resulta que de hecho tuve un montón de botes de basura en el classpath. Debe haber estropeado una descarga o algo así en algún momento. De todos modos, todo arreglado ahora. Cheers –

+0

¿Por qué no mueve su comentario a una respuesta y luego lo acepta? Esto podría ser una pregunta útil para alguien, pero por el momento se muestra como "sin respuesta". –

Respuesta

3

Según las sugerencias de Martin Clayton, mi comentario anterior se copia a continuación como respuesta.

"Ya lo había pensado porque había eliminado los primeros frascos que originalmente causaban este problema (ni siquiera estaba convencido de que realmente los necesitara) y el problema acaba de pasar al siguiente frasco ... Bueno, eso me hizo sospechar de una falla sistémica. Resulta que de hecho tuve un montón de botes de basura en el camino de clases. Debió haber estropeado una descarga o algo en algún momento. De todos modos, todo arreglado ahora. Saludos "

+0

Tenía montones de frascos ocultos (¡! 79974! Google-play-services.jar) causando el problema, ¡gracias por la idea! – rob5408

0

¿Hay un <filterset/> en cualquiera de las declaraciones copia en su archivo de generación? Me encontré con un problema una vez donde estaba <copy> -ing "**/*" y hacia el final del desarrollo descubrí cómo usar <filterset/> con <copy>.

Para resumir, el reemplazo de texto funcionó a la perfección, sin embargo, cualquier archivo binario, ejecutable o .jar que estaba en esa ruta "**/*" fue destruido por completo. En lugar de abrir archivos en modo binario, se abren en modo texto y luego se guardan en modo texto.

Si tiene un <filterset/>, o algo similar en cualquier parte de su archivo de compilación, asegúrese de <exclude/> todos y cada uno de los archivos binarios.

Cuestiones relacionadas