簡體   English   中英

Nashorn java.lang.NoClassDefFoundError:jdk / nashorn / api / scripting / JSObject

[英]Nashorn java.lang.NoClassDefFoundError: jdk/nashorn/api/scripting/JSObject

我正在將Eclipse RCP遷移為使用JDK 8並且大量使用了JS ScriptEngine 現在介紹了Nashorn ,我必須添加以下行以使importClassimportPackage函數正常工作:

load("nashorn:mozilla_compat.js");

這樣做之后,我得到了java.lang.NoClassDefFoundError: jdk/nashorn/api/scripting/JSObject

我在Eclipse RCP中使用Nashorn。 當我從Java Javascript調用Java函數並嘗試使用發送的參數時,會發生問題。 我要發送的參數是一個Javascript函數,我想稍后在代碼中執行call

我有以下代碼:

TestNashorn.java

package com.test.nashorn;

import java.io.FileNotFoundException;
import java.io.FileReader;

import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
import javax.script.Invocable;

import jdk.nashorn.api.scripting.JSObject;

public class TestNashorn {

    public static void main(String[] args) {
        ScriptEngine engine = (new ScriptEngineManager()).getEngineByName("js");
        try {
            engine.eval(new FileReader("C:/Users/user/workspace_nashorn/TestNashorn/src/com/test/nashorn/test.js"));
            Object o = ((Invocable)engine).invokeFunction("generate");
        } catch (ScriptException | FileNotFoundException | NoSuchMethodException e) {
            e.printStackTrace();
        }
    }

    public static int test(JSObject o1) {
        System.out.println(o1.getClass().toString());
        JSObject som = ((JSObject)o1);
        return 1;
    }
}

test.js

load("nashorn:mozilla_compat.js");
importClass(com.test.nashorn.TestNashorn);

function generate()
{
    function asd(variablex) { print('Hello, ' + variablex); }
    var result = TestNashorn.test(asd);
}

該問題發生在JSObject som = ((JSObject)o1);JSObject som = ((JSObject)o1); ,盡管我可以成功import jdk.nashorn.api.scripting.JSObject;

異常消息正好說:

com.test.nashorn_1.0.0.qualifier無法找到jdk.nashorn.api.scripting.JSObject

所以..我必須解決我的問題,並且能夠在我的代碼中使用JSObject 我所做的是以下幾點:

  • myproduct.product文件中添加了-Dorg.osgi.framework.bundle.parent=ext

這將其添加到我的產品版本的.ini文件中,該文件顯示了Nashorn API中找到的類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM