0

我们正面临一个奇怪的问题。我们正在使用 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)

我们上网查了一下,大部分的解决方案都和guava有关,但是guava版本或者容易出错或者gradle很久没有变化了。我们也尝试运行旧代码,得到同样的错误。我们无法理解问题的根本原因。有没有人面临同样的问题?

4

2 回答 2

0

com.google.collections:google-collections重命名为com.google.guava:guava这真的很烦人,并且通常会导致类路径上的库的两个版本。

这是我诊断问题的方法

  1. gradle dependencies在“损坏的”构建中运行
  2. 回到源代码控制(git?)的历史,直到你有一个工作版本
  3. gradle dependencies在“工作”构建中运行
  4. 查找版本的差异com.google.collections:google-collections
  5. 查找版本的差异com.google.guava: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")
        }
    }
}
于 2018-04-19T15:49:08.163 回答
0

发布了一个易于出错的新版本(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'
    }
}
于 2018-04-20T06:59:56.357 回答