Caused by: java.lang.UnsupportedClassVersionError: com/google/common/annotations/VisibleForTesting : Unsupported major.minor version 52.0 (unable to load class com.google.common.annotations.VisibleForTesting)

突然,没有与gradle或java jdk / jre版本相关的任何更改,我在构建服务器(ec2)上收到此运行时错误。如果我在本地计算机上运行它,则不会得到它。

我确保java -version对于我的构建服务器和本地计算机都返回1.7.0_x。
直到今天这么长时间都还不错。

最佳答案

从假期返回后重新构建未修改的应用程序时遇到了相同的问题。依赖关系树中的库现在依赖于最新版本的 Google Guava库,它需要Java 1.8。

从异常中可以看出com/google/common/annotations/VisibleForTesting导致了您的问题。批注类型VisibleForTesting是Google Guava库的一部分。几周以来Guava Release 21.0可用。从Release Notes您可以阅读...



您可能没有更改应用程序的依赖关系树,但是对于Guava 21.0的间接依赖关系确实存在。在我的情况下,是com.googlecode.owasp-java-html-sanitizer,它取决于Guava 21.0。下载JAR并查看依赖项配置(在我的情况下为maven),我发现需要Guava版本> = 11.0。它将被解析为最新版本,即21。我的IDE中的依赖关系层次结构 View 得出了相同的结论。

由于您同时已将构建服务器升级到JRE 1.8,因此问题不再存在(在构建服务器上)。请注意:将应用程序推入生产环境时,您的服务器也将需要JRE 1.8。

07-25 22:20
查看更多