Как мне исправить это исключение ZipException при компиляции проекта Android на Jenkins?

Недавно я обновил Android SDK на машине Jenkins до rev15 с rev13, и мне пришлось переделать некоторые из наших собственных сборок в build.xml , чтобы они соответствовали изменениям. Сделано в rev14. Я проработал это на своей рабочей станции и проверил, ожидая, что все будет персиковым. Вместо этого сборка завершается ошибкой со следующей ошибкой:

-obfuscate:

-dex:
      [dex] Converting compiled files and external libraries into /export/home/hudson/jobs/path/to/the/file/classes.dex...
       [dx] 
       [dx] UNEXPECTED TOP-LEVEL EXCEPTION:
       [dx] java.util.zip.ZipException: error in opening zip file
       [dx]     at java.util.zip.ZipFile.open(Native Method)    
       [dx]     at java.util.zip.ZipFile.<init>(ZipFile.java:127)
       [dx]     at java.util.zip.ZipFile.<init>(ZipFile.java:143)
       [dx]     at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:206)
       [dx]     at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:131)
       [dx]     at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:109)
       [dx]     at com.android.dx.command.dexer.Main.processOne(Main.java:418)
       [dx]     at com.android.dx.command.dexer.Main.processAllFiles(Main.java:329)
       [dx]     at com.android.dx.command.dexer.Main.run(Main.java:206)
       [dx]     at com.android.dx.command.dexer.Main.main(Main.java:174)
       [dx]     at com.android.dx.command.Main.main(Main.java:95)
       [dx] 1 error; aborting

BUILD FAILED
/opt/android-sdk-linux/tools/ant/build.xml:729: The following error occurred while executing this line:
/opt/android-sdk-linux/tools/ant/build.xml:731: The following error occurred while executing this line:
/opt/android-sdk-linux/tools/ant/build.xml:743: The following error occurred while executing this line:
/opt/android-sdk-linux/tools/ant/build.xml:249: null returned: 1

Я могу успешно построить проект, запустив ant от имени пользователя Jenkins непосредственно в каталоге рабочей области Jenkins с теми же Android SDK, Ant и JDK, что и Jenkins. использует. Я даже вырезал и вставил строку выполнения из журнала Jenkins, чтобы убедиться, что все ручки и переключатели установлены одинаково. Так что проблема в том, как Дженкинс запускает сборку.

Я попросил Дженкинса выгружать среду на этапе сборки, и я вижу, что установлена ​​переменная LD_LIBRARY_PATH .

LD_LIBRARY_PATH=/u0/jdk1.6.0_29/jre/lib/i386/server:/u0/jdk1.6.0_29/jre/lib/i386:/u0/jdk1.6.0_29/jre/../lib/i386

Я установил это значение в своем терминале при запуске сборки из оболочки, и он не работает так же, как когда Дженкинс запускает что-то. Ага!

Проблема в том, что я не могу понять, как предотвратить установку переменной LD_LIBRARY_PATH или указание на что-то, что не вызовет этой проблемы.Он не установлен в пользовательской среде Jenkins, и я не могу найти ничего, что могло бы указывать на него в конфигурации Jenkins. Установленное значение изменилось, когда я установил обновленный JDK и обновил значение JAVA в / etc / defaults / jenkins , поэтому оно явно связано, но, к сожалению, поведение не улучшилось любой.

У меня нет идей. Любая помощь?

7
задан Argyle 28 October 2011 в 23:18
поделиться