在 Wildfly/JBoss 中使用 GraalVM(脚本)

发布于 2025-01-12 11:11:55 字数 1292 浏览 3 评论 0原文

我想使用 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的提示!我本来就有这样的想法,但是测试的时候做错了。

您必须执行以下操作:

  1. 在文件jboss-dependendt-struct.xml中放入如下内容:

    ;
        <部署>
            <依赖关系>
                <模块名称=“org.graalvm”导出=“true”/>
            
        
    
    
  2. 在 `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:

  1. 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>
    
  2. 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

╄→承喏 2025-01-19 11:11:55

您必须在应用程序中添加对 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/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文