Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用graalVM替换nashorn_Javascript_Java_Nashorn_Graalvm_Graaljs - Fatal编程技术网

Javascript 用graalVM替换nashorn

Javascript 用graalVM替换nashorn,javascript,java,nashorn,graalvm,graaljs,Javascript,Java,Nashorn,Graalvm,Graaljs,我正在将一个Javascript引擎从Nashorn迁移到GraalVm,它无法实例化GraalJSScriptEngine/ScriptEngine。 我尝试了不同的方法: GraalJSEngineFactory factory = new GraalJSEngineFactory(); GraalJSScriptEngine engine = factory.getScriptEngine(); 我在上面遇到以下错误: ScriptEngineManager providers.nex

我正在将一个Javascript引擎从Nashorn迁移到GraalVm,它无法实例化GraalJSScriptEngine/ScriptEngine。 我尝试了不同的方法:

GraalJSEngineFactory factory =  new GraalJSEngineFactory();
GraalJSScriptEngine engine = factory.getScriptEngine();
我在上面遇到以下错误:

ScriptEngineManager providers.next(): javax.script.ScriptEngineFactory: Provider com.oracle.truffle.js.scriptengine.GraalJSEngineFactory could not be instantiated

java.lang.AbstractMethodError: Receiver class com.oracle.truffle.polyglot.PolyglotImpl does not define or inherit an implementation of the resolved method abstract buildEngine(Ljava/io/OutputStream;Ljava/io/OutputStream;Ljava/io/InputStream;Ljava/util/Map;JLjava/util/concurrent/TimeUnit;ZJZZZLorg/graalvm/polyglot/io/MessageTransport;Ljava/lang/Object;Lorg/graalvm/polyglot/HostAccess;)Lorg/graalvm/polyglot/Engine; of abstract class org.graalvm.polyglot.impl.AbstractPolyglotImpl.
执行like^时返回null。我还注意到,
ScriptEngineManager
实例中只有一个工厂(Nashorn)

我在类路径中添加了truffleAPI jar,并使用VM选项运行它:
-ea-XX:+UnlockExperimentalVMOptions-XX:+EnableJVMCI-Dpolyglot.js.nashorn compat=true

我在Java 13上运行它,并附带以下附加依赖项:

         <dependency>
            <groupId>org.graalvm.sdk</groupId>
            <artifactId>graal-sdk</artifactId>
            <version>19.1.1</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.graalvm.js/js -->
        <dependency>
            <groupId>org.graalvm.js</groupId>
            <artifactId>js</artifactId>
            <version>19.1.1</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.graalvm.js/js-scriptengine -->
        <dependency>
            <groupId>org.graalvm.js</groupId>
            <artifactId>js-scriptengine</artifactId>
            <version>19.1.1</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.graalvm.compiler/compiler -->
        <dependency>
            <groupId>org.graalvm.compiler</groupId>
            <artifactId>compiler</artifactId>
            <version>19.1.1</version>
        </dependency>

        <dependency>
            <groupId>org.graalvm.truffle</groupId>
            <artifactId>truffle-api</artifactId>
        </dependency>

org.graalvm.sdk
格拉尔sdk
19.1.1
org.graalvm.js
js
19.1.1
org.graalvm.js
js脚本引擎
19.1.1
org.graalvm.compiler
编译程序
19.1.1
org.graalvm.truffle
松露原料药

假设您以的工作为起点是否安全?是的,我已经开始了,但是GraalJSScriptEngine/ScriptEngine的实例化失败了,我需要特定的JDK吗?啊,我刚刚注意到您正在JDK13上运行。在JDK13()上运行时已经报告了一些问题。应该使用JDK11或12。在JDK8上遇到相同的问题。你找到解决办法了吗?找到了!我可以继续使用GraalJSEngineFactory factory=new-GraalJSEngineFactory();GraalJSScriptEngine engine=GraalJSScriptEngine.create(null,Context.newBuilder(“js”).allowHostAccess(HostAccess.ALL).allowHostClassLookup(s->true.allowAllAccess(true));假设您以的工作为起点安全吗?是的,我已经开始了,但是GraalJSScriptEngine/ScriptEngine的实例化失败了,我需要特定的JDK吗?啊,我刚刚注意到您正在JDK13上运行。在JDK13()上运行时已经报告了一些问题。应该使用JDK11或12。在JDK8上遇到相同的问题。你找到解决办法了吗?找到了!我可以继续使用GraalJSEngineFactory factory=new-GraalJSEngineFactory();GraalJSScriptEngine engine=GraalJSScriptEngine.create(null,Context.newBuilder(“js”).allowHostAccess(HostAccess.ALL).allowHostClassLookup(s->true.allowAllAccess(true));
ScriptEngine engine = new ScriptEngineManager().getEngineByName("graal.js");
         <dependency>
            <groupId>org.graalvm.sdk</groupId>
            <artifactId>graal-sdk</artifactId>
            <version>19.1.1</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.graalvm.js/js -->
        <dependency>
            <groupId>org.graalvm.js</groupId>
            <artifactId>js</artifactId>
            <version>19.1.1</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.graalvm.js/js-scriptengine -->
        <dependency>
            <groupId>org.graalvm.js</groupId>
            <artifactId>js-scriptengine</artifactId>
            <version>19.1.1</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.graalvm.compiler/compiler -->
        <dependency>
            <groupId>org.graalvm.compiler</groupId>
            <artifactId>compiler</artifactId>
            <version>19.1.1</version>
        </dependency>

        <dependency>
            <groupId>org.graalvm.truffle</groupId>
            <artifactId>truffle-api</artifactId>
        </dependency>