在 Wildfly/JBoss 中使用 GraalVM(脚本)
我想使用 GraalVM(版本 22.0.0.2 和 Java 17.0.2)在 Wildfly(版本 26.0)中执行 JavaScript。
如果我确实有以下代码:
System.out.println("Polyglot class: "+PolyglotException.class);
那么我的 JSE 单元测试(从 Eclise 开始)工作正常。但是,如果我在 Wildfly 的 EAR 中调用相同的代码,我会收到“
java.lang.ClassNotFoundException: org.graalvm.polyglot.PolyglotException
What's bad?”的 信息。我如何通知 Wildfly org.graalvm 类可用?
解决方案:
感谢ehsavoie的提示!我本来就有这样的想法,但是测试的时候做错了。
您必须执行以下操作:
在文件
jboss-dependendt-struct.xml
中放入如下内容:; <部署> <依赖关系> <模块名称=“org.graalvm”导出=“true”/> 在 `modules/org/graalvm/main/module.xml' 中定义一个文件,内容如下:
<模块名称=“org.graalvm”xmlns=“urn:jboss:模块:1.6”> <属性> <属性名称=“jboss.api”值=“公共”/> <依赖关系> <系统导出=“true”> <路径> <路径名称=“org/graalvm/polyglot”/>
抱歉,如果上面的示例中有任何拼写错误。我希望,未来的 Wildfly 版本可能会自动包含这样的文件。目前,我很高兴它能发挥作用。
I want to use GraalVM (version 22.0.0.2 with Java 17.0.2) to execute JavaScripts within Wildfly (version 26.0).
If I do have the following code:
System.out.println("Polyglot class: "+PolyglotException.class);
then my JSE unit test, started from Eclise, works fine. But if I call the same code within my EAR within Wildfly, I get an
java.lang.ClassNotFoundException: org.graalvm.polyglot.PolyglotException
What's wrong? How can I inform Wildfly that the org.graalvm classes are available?
Solution:
Thanks to ehsavoie for the hint! I already had such an idea but did something wrong when testing.
You do have to do the following:
Put in your file
jboss-dependendt-structure.xml
something like:<jboss-deployment-structure> <deployment> <dependencies> <module name="org.graalvm" export="true"/> </dependencies> </deployment> </jboss-deployment-structure>
define a file within `modules/org/graalvm/main/module.xml' with content like:
<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>
Sorry if there are any typos in upper examples. I hope, future Wildfly versions will maybe contain such a file automatically. For the moment, I am happy that it's working at all.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您必须在应用程序中添加对 org.graavml.polyglot 模块的依赖项,或者像使用模块 /sun/scripting/main/ 那样公开它
You would have to add dependency on the org.graavml.polyglot module in your application or expose it like what is done with the module /sun/scripting/main/