我们正面临一个奇怪的问题。我们使用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)
我们通过互联网搜索,大多数解决方案都与番石榴有关,但番石榴版本没有变化 errorprone或gradle很长一段时间。我们也试过运行旧代码,得到同样的错误。我们无法理解问题的根本原因。有没有人面临同样的问题?
答案 0 :(得分:0)
com.google.collections:google-collections
被重命名为com.google.guava:guava
,这真的很烦人,并且通常会导致类路径上的两个版本的库。
以下是我诊断问题的方法
gradle dependencies
gradle dependencies
com.google.collections:google-collections
com.google.guava:guava
请参阅Gradle文档中的here,其中讨论了guava重命名
您可能需要将其添加到build.gradle
dependencies {
modules {
module("com.google.collections:google-collections") {
replacedBy("com.google.guava:guava", "google-collections is now part of Guava")
}
}
}
答案 1 :(得分:0)
发布了errorprone的新版本(2.3.0),这打破了我们的构建。
我们使用此命令
找出依赖关系./gradlew -q dependencyInsight --configuration errorprone --dependency error_prone_core
这清楚地表明正在使用最新版本。我们强行使用最后一个可行的版本来修复它。以下行添加到build.gradle文件
configurations.all {
resolutionStrategy {
force 'com.google.errorprone:error_prone_core:2.2.0'
}
}