2010-04-08 7 views
6

Mam projekt zbudowany w Zaćmienie z zależnościami na słoikach 3rd party. Próbuję wygenerować odpowiedni plik kompilacji dla funkcji ant - using eclipses, wbudowanej funkcji export-> ant buildfile jako bloku początkowego.Słoik słownika klas kompilacji Ant generuje "błąd podczas otwierania pliku zip"

Kiedy biegnę cel kompilacji pojawia się następujący błąd:

[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 

i cały plik build (auto-generowany przez Eclipse) wygląda następująco: (uwaga: błąd powyżej zawsze odwołuje się pierwsza słoik wymienione w ścieżce klasy)

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

(wiem, że to zaćmienie konkretne rzeczy tutaj. Ale mam takie same wyniki z lub bez niej).

Zrobiłem stare wyszukiwania google i trałowałem bez powodzenia.

Mogę potwierdzić, że wszystkie słoiki naprawdę istnieją. Próbowałem także z linii poleceń i jako sudo - znowu te same wyniki.

Każda pomoc zostanie bardzo doceniona.

Cheers

+2

Czy plik JAR jest prawidłowy? Czy możesz otworzyć go w programie WinZip lub innym narzędziu do kompresji? – VonC

+0

Westchnienie. Pomyślałem, że ponieważ usunąłem pierwsze słoiki, które pierwotnie spowodowały ten problem (nie byłem nawet przekonany, że naprawdę ich potrzebuję) i problem właśnie przeniósł się do następnego słoika ... cóż, to sprawiło, że podejrzewałem o usterce systemowej. Okazało się, że w rzeczywistości posiadam mnóstwo słoików na śmiecie w ścieżce klas. W pewnym momencie musiałeś spieprzyć pobieranie lub coś podobnego. W każdym razie, wszystkie teraz ustalone. Pozdrawiam –

+0

Dlaczego nie przenieść komentarza do odpowiedzi, a następnie zaakceptować? Może to być przydatne pytanie dla kogoś, ale w tej chwili pokazuje się jako "bez odpowiedzi". –

Odpowiedz

3

Zgodnie z sugestiami Martina Claytona mój poprzedni komentarz został skopiowany poniżej jako odpowiedź.

"Wzdycha, domyśliłem się tego, ponieważ usunąłem pierwsze słoiki, które pierwotnie spowodowały ten problem (nie byłem nawet przekonany, że naprawdę ich potrzebowałem) i problem właśnie przeniósł się do następnego słoika .. Cóż, to sprawiło, że zacząłem podejrzewać systemowego błędu: okazało się, że w rzeczywistości miałem mnóstwo słoików na śmiecie w ścieżce klasycznej, musiałem spieprzyć jakieś pobieranie lub coś w tym momencie, w każdym razie, wszystkie teraz naprawione "Wiwaty"

+0

Mam wiele ukrytych słoików (.! 79974! Google-play-services.jar) powodujących problem, dziękuję za pomysł! – rob5408

0

Czy istnieje <filterset/> w żadnej z wypowiedzi kopiowanie w pliku kompilacji? Napotkałem problem, gdy byłem <copy> -ing "" i pod koniec rozwoju odkryłem, jak używać <filterset/> z <copy>.

W dużym skrócie, wymiana tekstu działała bezbłędnie, jednak każdy plik binarny, plik wykonywalny lub .jar, który był na tej ścieżce "**/*", został całkowicie zniszczony. Zamiast otwierania plików w trybie binarnym, otwierają się w trybie tekstowym, a następnie zapisywane w trybie tekstowym.

Jeśli masz plik <filterset/> lub coś podobnego w dowolnym miejscu pliku kompilacji, upewnij się, że wszystkie pliki binarne znajdują się pod adresem <exclude/>.