正如我之前提出的另一个问题所述,我正在尝试为 Nashorn 找到一种解决方法,使其与 1.8 以上的每个 Java 版本兼容。
我目前正在尝试UnsupportedClassVersionError
了解系统是否能够像这样运行独立的 Nashorn for Java 15(Kotlin 代码):
scriptEngine = try {
// Java >= 15
org.openjdk.nashorn.api.scripting.NashornScriptEngineFactory().scriptEngine
} catch(e: UnsupportedClassVersionError) {
// Java < 15
@Suppress("DEPRECATION")
jdk.nashorn.api.scripting.NashornScriptEngineFactory().scriptEngine
}
但是,看起来错误没有被捕获。堆栈跟踪如下:
java.lang.UnsupportedClassVersionError: org/openjdk/nashorn/api/linker/NashornLinkerExporter has been compiled by a more recent version of the Java Runtime (class file version 59.0), this version of the Java Runtime only recognizes class file versions up to 55.0
我还尝试捕获NoClassDefFoundError
反转以前的 try/catch(加载 Java < 15 Nashorn,如果它不存在,则加载独立的),但错误是相同的。
编辑:看起来错误是由 Java < 15 Nashorn 本身引发的。