我在这里找到了一个在Java 中使用脚本的示例。我创建了我的类,创建了一个实例,将它放入,运行它的方法并得到一个错误:NoteenginegetTitle
Exception in thread "main" javax.script.ScriptException: TypeError:
note.getTitle is not a function in <eval> at line number 1
我以与链接中的示例相同的方式完成了所有操作。可能是什么问题呢?
使用File它的代码可以工作,但对于我的班级Note则不行。
如果你这样写:engine.eval("print(note.title)");,那么输出将是undefined。
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import java.io.File;
public class Arrays {
class Note {
public String title, text;
Note(String title, String text) {
this.title = title;
this.text = text;
}
public String getTitle() { return title; }
}
void run() throws Exception {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");
Note note = new Note("title", "text");
engine.put("note", note);
engine.eval("print(note.getTitle())");
File f = new File("a.txt");
engine.put("f", f);
engine.eval("print(f.getAbsolutePath())");
}
public static void main(String[] args) throws Exception {
Arrays main = new Arrays();
main.run();
}
}
该类
Note必须存在,public以便 JavaScript 引擎可以访问它的方法。