簡體   English   中英

如何在Jenkins上編譯Android項目時修復此ZipException?

[英]How do I fix this ZipException while compiling an Android project on Jenkins?

我最近將Jenkins機器上的Android SDK從rev13更新到rev15,並且不得不在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

我可以使用Jenkins正在使用的相同Android SDK,Ant和JDK直接在Jenkins工作區目錄中運行ant作為Jenkins用戶來成功構建項目。 我甚至將執行線從Jenkins日志中剪切並粘貼,以確保所有旋鈕和開關設置相同。 所以這是關於Jenkins如何運行構建問題的問題。

我讓Jenkins將環境轉儲為構建的“shell exec”步驟,我看到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

我在從終端運行構建時在終端中設置了這個值,它的失敗方式與Jenkins運行時的方式相同。 啊,哈!

問題是我無法弄清楚如何保持LD_LIBRARY_PATH變量不被設置,或指向不會導致此問題的事情。 它沒有在Jenkins用戶的環境中設置,我在Jenkins配置中找不到任何可能引用它的東西。 當我安裝更新的JDK並更新/etc/defaults/jenkinsJAVA值時,它設置的值確實發生了變化,因此它顯然是相關的,但不幸的是,這種行為沒有改善。

我沒有想法。 有幫助嗎?

問題結果是由於一些配置chicanery參與使用Jenkins矩陣構建功能(順便說一句非常好的功能),庫沒有將其classes.jar文件放在父項目所期望的位置找到它,導致報告錯誤。 這基本上是一個“未找到的文件”,並沒有這么說。 我們仍然不確定LD_LIBRARY_PATH與它有什么關系(如果有的話)。

我的同事調整了主項目和庫的build.xml文件,以便更有力地同意輸出文件最終的位置,現在一切都再次起作用,這讓我們感到寬慰。

我有同樣的問題。 我在Jenkins上構建,jar被錯誤地復制到庫中。

我正在使用Jenkins Copy Artifacts插件來獲取一個公共庫jar並將其復制到libs /中。 當我沒有使用“Flatten Directories”選項時,我收到了錯誤。 一旦我在libs目錄中使用jar,一切都恢復正常。

希望這能讓人頭疼!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM