java.lang.UnsupportedClassVersionError 试图 运行 Jena ARQ 跟随 O'Reilly SPARQL 书

java.lang.UnsupportedClassVersionError trying to run Jena ARQ to follow along with O'Reilly SPARQL book

我正在尝试按照 O'Reilly SPARQL 1.1 书中的建议获取 Jena ARQ,以便我可以按照书中的查询示例进行操作。我已经从 jena.apache.org/download/index.cgi 下载了 apache-jena-.4.0.zip 并按照说明提取和设置 JENA_HOME 和 PATH 环境变量。

当我从 windows cmd 终端 运行 ARQ.bat 我得到

Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: arq/arq has been 
compiled by a more recent version of the Java Runtime (class file version 55.0), 
this version of the Java Runtime only recognizes class file versions up to 52.0

在本论坛和其他地方阅读有关该错误消息的帮助建议我重新编译 class(我不能这样做)或更新 Java 运行 时间。所以我为 Windows 删除并重新安装了 Java JRE 64--位 来自 https://www.java.com/en/download/ Windows 的 64 位 Java 发布日期:2022 年 1 月 18 日

并重新启动机器。

运行 java -cmd 提示符的版本给我

Java(TM) SE Runtime Environment (build 1.8.0_321-b07)
Java HotSpot(TM) 64-Bit Server VM (build 25.321-b07, mixed mode)

但是 java.lang.UnsupportedClassVersionError 仍然存在

有什么想法吗? 或者任何其他针对本地数据文件执行 SPARQL 查询文件的简单方法,以便我可以阅读 SPARQL 书籍?

Class 文件版本 55.0 相当于 Java 11(例如可以看到 here)。但是,您从 java.com 安装的 Java 版本是 Java 8。因此您至少需要使用 Java 11,但更新版本(例如 Java 17 ) 也可能有效。

您可以获得较新版本的 Oracle JDK here, or you can use Open JDK builds, for example from here. See for example this question 了解 Oracle JDK 和 Open JDK 之间的差异。