Нет доступа к методу из JavaScript: ScriptException: TypeError: note.getTitle is not a function

282
16 марта 2017, 20:24

Нашёл пример для работы с скриптами в 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();
    }
}
Answer 1

Класс Note должен быть public чтобы движок JavaScript мог обратиться к его методам.

public class Note {
READ ALSO
Тормозит css-анимация

Тормозит css-анимация

Суть вопроса в следующемНа сайте есть sidebar (выезжающее справа меню), анимация которого построена на css-transitions

539
При обновлении сайта выдает `alert` [требует правки]

При обновлении сайта выдает `alert` [требует правки]

При обновлении или загрузке сайта, выдает alert

247
Как добавить фильтр bem в atom?

Как добавить фильтр bem в atom?

Как добавить фильтр bem в сниппет atoma? чтоб не приходилось постоянно прописывать |bemПробовал добавлять File->Snippets(snippets

309