我试图在实例中使用GraalJS来呈现服务器端。但是,当试图使用GraalJS运行代码时,我遇到了问题。每当我运行它时,我都会被抛出一个异常。
org.graalvm.polyglot.PolyglotException: java.lang.NoClassDefFoundError: Could not initialize class com.oracle.truffle.js.runtime.JSContext
at com.oracle.truffle.js.runtime.JSEngine.createContext(JSEngine.java:72) [xxxxxxxxxxxxx:2.1.0.SNAPSHOT]
at com.oracle.truffle.js.runtime.JSEngine.createJSContext(JSEngine.java:80) [xxxxxxxxxxxxx:2.1.0.SNAPSHOT]
at com.oracle.truffle.js.lang.JavaScriptLanguage.newJSContext(JavaScriptLanguage.java:354) [xxxxxxxxxxxxx:2.1.0.SNAPSHOT]
at com.oracle.truffle.js.lang.JavaScriptLanguage.initLanguageContext(JavaScriptLanguage.java:348) [xxxxxxxxxxxxx:2.1.0.SNAPSHOT]
at com.oracle.truffle.js.lang.JavaScriptLanguage.createContext(JavaScriptLanguage.java:323) [xxxxxxxxxxxxx:2.1.0.SNAPSHOT]
at com.oracle.truffle.js.lang.JavaScriptLanguage.createContext(JavaScriptLanguage.java:113) [xxxxxxxxxxxxx:2.1.0.SNAPSHOT]
at com.oracle.truffle.api.LanguageAccessor$LanguageImpl.createEnvContext(LanguageAccessor.java:283) [xxxxxxxxxxxxx:2.1.0.SNAPSHOT]
at com.oracle.truffle.polyglot.PolyglotLanguageContext.ensureCreated(PolyglotLanguageContext.java:557) [xxxxxxxxxxxxx:2.1.0.SNAPSHOT]
at com.oracle.truffle.polyglot.PolyglotLanguageContext.ensureCreated(PolyglotLanguageContext.java:500) [xxxxxxxxxxxxx:2.1.0.SNAPSHOT]
at com.oracle.truffle.polyglot.PolyglotLanguageContext.ensureInitialized(PolyglotLanguageContext.java:642) [xxxxxxxxxxxxx:2.1.0.SNAPSHOT]
at com.oracle.truffle.polyglot.PolyglotContextImpl.eval(PolyglotContextImpl.java:1216) [xxxxxxxxxxxxx:2.1.0.SNAPSHOT]
at com.oracle.truffle.polyglot.PolyglotContextDispatch.eval(PolyglotContextDispatch.java:62) [xxxxxxxxxxxxx:2.1.0.SNAPSHOT]
at org.graalvm.polyglot.Context.eval(Context.java:379) [xxxxxxxxxxxxx:2.1.0.SNAPSHOT]
这是我的密码:
try {
Context engine = Context.create("js");
Source source = Source.newBuilder("js", script, "<shell>").buildLiteral();
Value value = engine.eval(source);
if (value != null) {
return value.toString();
}
} catch (Exception e) {
e.printStackTrace();
}
我用这些JVM参数运行我的实例:
java -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI -XX:+UseJVMCICompiler
--module-path=~/aem/graalvm/graal-sdk-21.3.0.jar:~/aem/graalvm/truffle-api-21.3.0.jar
--upgrade-module-path=~/aem/graalvm/compiler-21.3.0.jar:~/aem/graalvm/compiler-management-21.3.0.jar
-cp ~/aem/graalvm/launcher-common-21.3.0.jar:~/aem/graalvm/js-launcher-21.3.0.jar:~/aem/graalvm/js-21.3.0.jar:~/aem/graalvm/truffle-api-21.3.0.jar:~/aem/graalvm/graal-sdk-21.3.0.jar:~/aem/graalvm/js-scriptengine-21.3.0.jar:~/aem/graalvm/regex-21.3.0.jar:~/aem/graalvm/icu4j-70.1.jar
...
据我所知,所有必需的依赖项(包括该类所属的js库)都存在于我的类路径和项目的依赖项中。我可以很好地运行单元测试,只有在实际的AEM实例中运行时才会出现这个问题。
发布于 2022-05-23 02:14:45
我发现了问题所在,结果发现我缺少了icu4j依赖项,并且没有在包的<Import-Package>
标记中导入它。
https://stackoverflow.com/questions/72341934
复制相似问题