“无法找到方法 ''void org.apache.commons.compress.archivers.zip.ZipFile.<init>(java.nio.channels.SeekableByteChannel)''”

b4c*_*cku 12 java android gradle android-studio

问题:我目前正在使用Android StudioGradle从 github 存储库( 00-Evan/shattered-pixel-dungeon )编译代码,同时我可以运行一些任务(尝试过 'desktop:release'、'desktop:debug' ),gradle 拒绝正确同步,每​​次我尝试同步时,都会弹出错误日志:

FAILURE: Build failed with an exception.

* What went wrong:
'void org.apache.commons.compress.archivers.zip.ZipFile.<init>(java.nio.channels.SeekableByteChannel)'

* Try:
Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Exception is:
java.lang.NoSuchMethodError: 'void org.apache.commons.compress.archivers.zip.ZipFile.<init>(java.nio.channels.SeekableByteChannel)'
    at com.android.repository.util.InstallerUtil.unzip(InstallerUtil.java:99)
Run Code Online (Sandbox Code Playgroud)

重要提示:我以前遇到过这个问题(在编译此代码的早期版本时),然后下载特定版本的 SDK 构建工具(如果我没记错的话,为 30.0.0 和 26.0.0)有帮助,但这没有帮助不再了。
使用此代码的其他人没有报告同样的问题,我似乎是唯一的一个。

另外,由于某种原因,android 任务似乎也无法工作,就好像 android studio 无法识别它们一样:

Task 'release' not found in project ':android'.

 * Try:
Run gradle tasks to get a list of available tasks. Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
Run Code Online (Sandbox Code Playgroud)

我尝试过的:

  • 清除缓存并重新启动 Android Studio/我的电脑
  • 启用/禁用不同的构建工具版本(请参阅“重要”部分)。目前我已尝试启用所有 30.0.X 和 26.0.X 版本并禁用已启用的任何较新版本
  • 浏览了类似的 Stackoverflow 线程,但它们要么似乎不适用于我的情况,要么没有包含足够的信息。链接链接,还是链接
  • 卸载 Android Studio 并从头开始重新下载。

附加信息:

  • Android Studio 版本:Android Studio 北极狐 | 2020.3.1补丁4(当前最新)
  • Gradle版本:7.2(我尝试使用7.1.1,但这没有解决问题)

小智 6

对于任何寻求更多信息的人来说,Google 的问题跟踪器 中已经涵盖了这个特定问题。简而言之,问题源于 Apache和 Gradle 本身commons-compress之间的依赖解析不匹配robovm-gradle-plugin。至于 Shattered Pixel Dungeon,该修复已包含在此提交中


小智 2

一般来说,当你安装android studio时,它会安装最新的SDK和最新的构建工具版本,这与现有的项目不兼容。

根据00-Evan/shattered-pixel-dungeon中存在的build.gradle

您应该尝试安装 SDK 版本 30。以及 SDK 构建工具版本:30.0.X。它应该有效。

对我来说,它使用 SDK 版本 30 和构建工具版本 30.0.3。

只需确保您拥有 build.gradle 中提到的 java 版本 8。