我们正面临一个奇怪的问题。我们使用net.ltgt.errorprone版本(0.0.8(,以及guava(版本21(和gradle(版本3.1(。直到今天早上,一切都很好。但是突然间,所有开发人员都开始收到此错误
[system.err] An exception has occurred in the compiler (1.8.0_162). Please file a bug against the Java compiler via the Java bug reporting page (http://bugreport.java.com) after checking the Bug Database (http://bugs.java.com) for duplicates. Include your program and the following diagnostic in your report. Thank you.
java.lang.NoSuchMethodError: com.google.common.base.Verify.verify(ZLjava/lang/String;Ljava/lang/Object;)V
at com.google.errorprone.ErrorProneAnalyzer.finished(ErrorProneAnalyzer.java:132)
我们通过互联网搜索,大多数解决方案都与番石榴有关,但番石榴版本或番石榴版本没有变化长期以来容易出错或渐变。我们也尝试运行旧代码,但得到同样的错误。我们无法理解问题的根本原因。有人面临同样的问题吗?
>com.google.collections:google-collections
被重命名为com.google.guava:guava
这真的很烦人,并且通常会导致类路径上有两个版本的库。
这是我诊断问题的方法
- 在"损坏"版本中运行
gradle dependencies
- 在源代码管理(git?(中回顾历史,直到你有一个工作版本
- 在"工作"版本中运行
gradle dependencies
- 查找
com.google.collections:google-collections
版本的差异 - 查找
com.google.guava:guava
版本的差异
请参阅此处的 Gradle 文档中,其中讨论了番石榴重命名
您可能需要将其添加到build.gradle
dependencies {
modules {
module("com.google.collections:google-collections") {
replacedBy("com.google.guava:guava", "google-collections is now part of Guava")
}
}
}
(2.3.0(的errorprone ,这破坏了我们的构建。
我们使用此命令找出依赖项
./gradlew -q dependencyInsight --configuration errorprone --dependency error_prone_core
这清楚地表明正在使用最新版本。我们通过强制使用最后一个可行的版本来修复它。以下行已添加到 build.gradle 文件中
configurations.all {
resolutionStrategy {
force 'com.google.errorprone:error_prone_core:2.2.0'
}
}