在 Wildfly/JBoss 中使用 GraalVM(脚本)
Using GraalVM (scripting) within Wildfly/JBoss
我想使用 GraalVM(版本 22.0.0.2,Java 17.0.2)在 Wildfly(版本 26.0)中执行 Java脚本。
如果我有以下代码:
System.out.println("Polyglot class: "+PolyglotException.class);
然后我从 Eclise 开始的 JSE 单元测试工作正常。但是如果我在 Wildfly 中的 EAR 中调用相同的代码,我会得到一个
java.lang.ClassNotFoundException: org.graalvm.polyglot.PolyglotException
怎么了?我如何通知 Wildfly org.graalvm 类 可用?
解法:
感谢 ehsavoie 的提示!本来就有这样的想法,但是测试的时候做错了
您必须执行以下操作:
在你的文件中输入 jboss-dependendt-structure.xml
像这样的东西:
<jboss-deployment-structure>
<deployment>
<dependencies>
<module name="org.graalvm" export="true"/>
</dependencies>
</deployment>
</jboss-deployment-structure>
在 `modules/org/graalvm/main/module.xml' 中定义一个文件,内容如下:
<module name="org.graalvm" xmlns="urn:jboss:module:1.6">
<properties>
<property name="jboss.api" value="public"/>
</properties>
<dependencies>
<system export="true">
<paths>
<path name="org/graalvm/polyglot"/>
<!-- probably more packages will follow, but this is enough for the example -->
</paths>
</system>
</dependencies>
</module>
如果上面的例子有错别字,请见谅。我希望,未来的 Wildfly 版本可能会自动包含这样的文件。目前,我很高兴它能正常工作。
您必须在应用程序中添加对 org.graavml.polyglot 模块的依赖,或者像对模块 /sun/scripting/main/
所做的那样公开它
我想使用 GraalVM(版本 22.0.0.2,Java 17.0.2)在 Wildfly(版本 26.0)中执行 Java脚本。
如果我有以下代码:
System.out.println("Polyglot class: "+PolyglotException.class);
然后我从 Eclise 开始的 JSE 单元测试工作正常。但是如果我在 Wildfly 中的 EAR 中调用相同的代码,我会得到一个
java.lang.ClassNotFoundException: org.graalvm.polyglot.PolyglotException
怎么了?我如何通知 Wildfly org.graalvm 类 可用?
解法:
感谢 ehsavoie 的提示!本来就有这样的想法,但是测试的时候做错了
您必须执行以下操作:
在你的文件中输入
jboss-dependendt-structure.xml
像这样的东西:<jboss-deployment-structure> <deployment> <dependencies> <module name="org.graalvm" export="true"/> </dependencies> </deployment> </jboss-deployment-structure>
在 `modules/org/graalvm/main/module.xml' 中定义一个文件,内容如下:
<module name="org.graalvm" xmlns="urn:jboss:module:1.6"> <properties> <property name="jboss.api" value="public"/> </properties> <dependencies> <system export="true"> <paths> <path name="org/graalvm/polyglot"/> <!-- probably more packages will follow, but this is enough for the example --> </paths> </system> </dependencies> </module>
如果上面的例子有错别字,请见谅。我希望,未来的 Wildfly 版本可能会自动包含这样的文件。目前,我很高兴它能正常工作。
您必须在应用程序中添加对 org.graavml.polyglot 模块的依赖,或者像对模块 /sun/scripting/main/
所做的那样公开它