nashorn遷移至graaljs

JavaScript代碼如下:
function Get_script(This_Service,This_Field,Parent)
{

            if(Parent==null)
            {
                var l1=This_Service.Get_entity_class_list();
                This_Field.setComponent_Value_List(l1);
            }
            else
            {
                This_Field.Set_field_value_consistent_with_parent(Parent);
            }
        }

Java 有關代碼如下:
    private Object Run_script_function_2(String Function,ArrayList<Object> Parameter_List)
    {
        if(Function==null)
        {
            return null;
        }
        if(Parameter_List==null)
        {
            return null;
        }
        Function=Function.replace("*", "_");
        
        ScriptEngine graaljsEngine = new ScriptEngineManager().getEngineByName("graal.js");;
        try 
        {
            graaljsEngine.eval(Function);
        } 
        catch (Exception e) 
        {
            return null;
        }
        Invocable Invocable_Engine = (Invocable) graaljsEngine;
        Object Script_Return = Run_script_function_3(Invocable_Engine,Parameter_List);
        return Script_Return;
    }
    private Object Run_script_function_3(Invocable Invocable_Engine,ArrayList<Object> Parameter_List)
    {
        Object Script_Return = null;
        int l=Parameter_List.size();
        try 
        {
            switch(l)
            {
                case 0:
                {
                    Script_Return=Invocable_Engine.invokeFunction("Get_script");
                    break;
                }
                case 1:
                {
                    Script_Return=Invocable_Engine.invokeFunction("Get_script",Parameter_List.get    (0));
                    break;
                }
                case 2:
                {
                    Script_Return= Invocable_Engine.invokeFunction("Get_script",Parameter_List.get      (  0),Parameter_List.get(1));
                    break;
                }
                case 3:
                {
                    Script_Return= Invocable_Engine.invokeFunction("Get_script",Parameter_List.get(0),Parameter_List.get(1),Parameter_List.get(2));
                    break;
                }
                case 4:
                {
                    Script_Return= Invocable_Engine.invokeFunction("Get_script",Parameter_List.get(0),Parameter_List.get(1),Parameter_List.get(2),Parameter_List.get(3));
                    break;
                }
                case 5:
                {
                    Script_Return= Invocable_Engine.invokeFunction("Get_script",Parameter_List.get(0),Parameter_List.get(1),Parameter_List.get(2),Parameter_List.get(3),Parameter_List.get(4));
                    break;
                }
                case 6:
                {
                    Script_Return= Invocable_Engine.invokeFunction("Get_script",Parameter_List.get(0),Parameter_List.get(1),Parameter_List.get(2),Parameter_List.get(3),Parameter_List.get(4),Parameter_List.get(5));
                    break;
                }
                case 7:
                {
                    Script_Return= Invocable_Engine.invokeFunction("Get_script",Parameter_List.get(0),Parameter_List.get(1),Parameter_List.get(2),Parameter_List.get(3),Parameter_List.get(4),Parameter_List.get(5),Parameter_List.get(6));
                    break;
                }
                case 8:
                {
                    Script_Return= Invocable_Engine.invokeFunction("Get_script",Parameter_List.get(0),Parameter_List.get(1),Parameter_List.get(2),Parameter_List.get(3),Parameter_List.get(4),Parameter_List.get(5),Parameter_List.get(6),Parameter_List.get(7));
                    break;
                }
                case 9:
                {
                    Script_Return= Invocable_Engine.invokeFunction("Get_script",Parameter_List.get(0),Parameter_List.get(1),Parameter_List.get(2),Parameter_List.get(3),Parameter_List.get(4),Parameter_List.get(5),Parameter_List.get(6),Parameter_List.get(7),Parameter_List.get(8));
                    break;
                }
            }
        } 
        catch (Exception e) 
        {
            return e;
        }         
        return Script_Return;
    }

報錯:
javax.script.ScriptException: org.graalvm.polyglot.PolyglotException: TypeError: invokeMember (Get_entity_class_list) on com.stepforward.mirrorworld.p3_application_bean.Groupunit.Groupunit_Service@6c634767 failed due to: Unknown identifier: Get_entity_class_list
“This_Service”即“Groupunit_Service”,是Java類,“Get_entity_class_list” 是該類的方法。

ScriptEngine 配置一下 polyglot.js.allowAllAccess=true

试试 put 加上 This_Service


    ScriptEngine engine = new ScriptEngineManager().getEngineByName("graal.js");
    Bindings bindings = engine.createBindings();
    bindings.put("polyglot.js.allowAllAccess", true);
    bindings.put("This_Service", new This_Service());
    engine.setBindings(bindings, ScriptContext.ENGINE_SCOPE);