我正在寻找一种解决方案,使Nashorn与Java 1.8及以上的所有版本兼容,正如我之前在另一个问题中提到的那样(请参见此问题)。
目前,我正在尝试捕获
然而,看起来错误并没有被捕获。堆栈跟踪如下:
目前,我正在尝试捕获
UnsupportedClassVersionError
以确定系统是否能够像这样运行Java 15的独立Nashorn(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
我曾尝试通过反转之前的try/catch(加载Java < 15 Nashorn,如果不存在则加载独立版本)来捕获NoClassDefFoundError
,但错误仍然存在。
编辑:看起来这个错误是由Java < 15 Nashorn本身抛出的。