使用 Java 7 和 Ignite jar 在 Apache Ignite 上出现 UnsupportedClassVersionError 问题

UnsupportedClassVersionError problem on Apache Ignite using Java 7 with Ignite jars

我在我的应用程序中使用 Apache Ignite 服务器单独使用 Ignite jar(Ignite jar 版本 2.12.0),我没有使用 Ignite 独立软件实现,因为它需要单独的软件。

问题是,当与 Java 8 一起使用时,它是 运行 正确的,当与 Java 7 一起使用时,它显示 UnsupportedClassVersionError。

注意:在我的申请中,要求仅 Java 7。

错误详情:

java.lang.UnsupportedClassVersionError: org/apache/ignite/spi/discovery/tcp/ipfinder/TcpDiscoveryIpFinder : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)

有人可以指导一下吗?如何在 Java 7 中使用 Apache Ignite?

支持的最低版本是 Java8。我认为您无法在任何旧版本上使用它。 Java 7 于 2011 年发布,已经有一段时间没有得到支持了。

我同意@Mark Rotteveel 的观点。 Java 7 早已过去 end-of-life,继续为该平台开发新代码是一个杯子游戏1, 2.

升级到Java8. 告诉老板需要完成

但是,假设您想继续深入 Java 7 洞 ...

查看 Apache Ignite release history,我发现 Java 7 支持在 Ignite 2.4 中被删除。因此,如果您愿意并且能够回滚到 Ignite 2.3 或更早版本,您很有可能可以推迟升级到 Java 8 的时间。

另一种选择是从官方源存储库中签出更新版本的 Ignite,看看是否可以为 Java 7 构建它。(Java 源和目标版本在“parent/pom.xml”文件中设置...)

问:Ignite 的哪个 post 2.4 版本仍会为 Java 7 构建?
答:我不知道。您可能必须修改代码才能构建它,尤其是当他们已经开始使用新的 Java 8+ 语言功能时。
问:构建的代码可以工作吗?
答:不知道。
问:back-ported 代码是否会得到代码作者的支持?
答:不可能!


1 - ...除非您或您的公司因从事这项工作而获得丰厚的报酬。那样的话,杯子就是你的客户。
2 - https://www.merriam-webster.com/dictionary/a%20mug%27s%20game