【问题标题】:Suddenly Getting Unsupported major.minor version 52.0突然变得不受支持 major.minor 版本 52.0
【发布时间】:2017-05-07 04:22:43
【问题描述】:
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。 一直到今天都还好。

【问题讨论】:

  • 也许你已经添加了一个使用 Java 8 编译的依赖项(可能是 guava 或其依赖项之一)。
  • 您的构建系统中的 java 版本可能不同。您能否将环境变量打印为构建的一部分。如果您使用的是 maven,请执行 mvn -v 以打印版本。
  • 我没有添加/删除任何依赖项,我的 build.gradle 文件没有变化:x,构建服务器也没有变化。但我最终尝试在我的构建服务器上安装 java run time 1.8,现在一切都很好......仍然很奇怪
  • 除非您从头开始构建该谷歌库,否则我认为@pringi 是正确的。也许存储库已更新

标签: java tomcat gradle java-8


【解决方案1】:

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

您可以从异常中了解到com/google/common/annotations/VisibleForTesting 会导致您的问题。注释类型 VisibleForTesting 是 Google Guava 库的一部分。几周后,Guava Release 21.0 可用。从Release Notes 你可以阅读...

重要提示:Guava 21.0 需要 Java 8。

您可能没有更改应用程序的依赖关系树,但确实存在对 Guava 21.0 的间接依赖关系。就我而言,它是依赖于 Guava 21.0 的 com.googlecode.owasp-java-html-sanitizer。下载 JAR 并查看依赖配置(在我的例子中是 maven),我看到需要 Guava 版本 >= 11.0。这将被解析为最新版本,因此 21。我的 IDE 中的依赖层次结构视图得出了相同的结论。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-24
    • 1970-01-01
    • 1970-01-01
    • 2017-01-23
    • 2017-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多