Нашёл пример для работы с скриптами в Java здесь. Создал свой класс Note
, создал экземпляр, положил его в engine
, запускаю его метод getTitle
и получаю ошибку:
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 мог обратиться к его методам.
public class Note {
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Суть вопроса в следующемНа сайте есть sidebar (выезжающее справа меню), анимация которого построена на css-transitions
При обновлении или загрузке сайта, выдает alert
Как добавить фильтр bem в сниппет atoma? чтоб не приходилось постоянно прописывать |bemПробовал добавлять File->Snippets(snippets