当前位置: 首页 > 面试题库 >

在Jenkins上编译Android项目时,如何修复此ZipException?

曹鸿风
2023-03-14
问题内容

我最近将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

通过ant以Jenkins用户身份直接在Jenkins工作区目录中运行,并使用与Jenkins使用的相同的Android
SDK,Ant和JDK,我可以成功构建项目。我什至从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并更新了其中的值时,它设置的值确实发生了变化JAVA/etc/defaults/jenkins因此它显然是相关的,但不幸的是,此行为没有任何改善。

我没主意了。有什么帮助吗?


问题答案:

原来的问题是,由于使用Jenkins矩阵构建功能(顺便说一句,这是一个非常好的功能)所涉及的一些配置问题,图书馆没有将其classes.jar文件放在父项目期望找到的位置,导致报告的错误。基本上,这是一个“找不到文件”,但没有这样说。我们仍然不确定LD_LIBRARY_PATH与它有什么关系(如果有的话)。

我的同事build.xml对主要项目和库的文件进行了调整,以更加有力地就输出文件的最终输出位置达成共识,现在一切又都可以正常工作了,这极大地减轻了我们的负担。



 类似资料:
  • 当我尝试构建我的项目时,我遇到了这些错误,它似乎认为我有两个相同的库,但我不确定为什么: 这是我的build.gradle文件 这是我的顶级gradle构建文件: { } 我想这个错误发生在升级到Android Studio后,但我不记得了。我的Android Studio版本现在是3.2.1。我能够让这个项目以前建立。

  • 编辑问题以包括所需的行为、特定问题或错误以及重现问题所需的最短代码。这将有助于其他人回答这个问题。 我正在尝试制作一个minecraft客户端,但当我反编译它时,它说 ==在JAVA代码中发现错误== 初始客户端重新编译失败,请更正源代码,然后运行updatemd5按任意键继续。 我已经安装了java jdk,但是我还需要做什么

  • 错误:(45,30)错误:multi-catch语句在-source 1.6中不受支持(请使用-source 7或更高版本来启用multi-catch语句) 我已经安装了java 1.8,并在模块设置中进行了设置。但是我不断得到这个错误。

  • 当我尝试运行为android编译的web面板时,出现以下错误: 错误:Android SDK的以下组件缺失或不符合其所需版本: Android 5.0(API 21)ARM EABI v7a系统映像(任何版本)请转到“工具” 但是我已经安装了这个需求。我能做些什么来解决这个问题? 我尝试运行此解决方案 步骤1-打开powershell cd C:\Program Files\Android\And

  • 我的Android项目设置为使用Maven,所以我从pom.xml文件导入IntelliJ。IntelliJ中的编译器设置正确地指向1.7,但当我尝试编译时我得到: 错误:java:javacTask:源版本1.7要求目标版本1.7 我对maven编译器插件的设置将源和目标都设置为这个,所以这不是问题所在。但是,在模块设置中,我看到我的模块正在使用 Maven Android API 19平台(j

  • 我是Android Studio的新手。目前,我正在使用Android Studio 4。当导入基于旧版本(项目的Github链接)构建的项目时,gradle同步失败。出现以下错误: Gradle同步失败:无法使用Gradle分发https://services.gradle.org/distributions/gradle-2.10-all.zip运行构建操作。有关更多详细信息,请参阅IDE日志