Как отладить JavaScript в Nashhorn (JDK 8+) в Netbeans?

5

Я видел, что последняя бета-версия Netbeans 8.0 предлагает способ отладки "кода JavaScript, выполняемого в Nashorn" (см. Прикрепленный файл)

Изображение 97883

Какие шаги, чтобы увидеть это в действии?

[ОБНОВЛЕНИЕ] Я смог запустить простой файл JavaScript, только открыв его (вне любого проекта), щелкнув внутри файла, щелкнув правой кнопкой мыши и выбрав опцию "Выполнить файл".

Изображение 97884

Я должен отметить, что ярлык "Shift-F6" не работал для меня.

Так что, если кто-то еще знает о другом способе запуска, пожалуйста, опубликуйте свое решение.

[ОБНОВЛЕНИЕ 2] Новая статья о JavaScript Nashorn упоминает об отладке JavaScript в Netbeans

[ОБНОВЛЕНИЕ 3] Кажется, что Nashhorn будет объявлен устаревшим внутри JDK. См. JEP 335: Устаревший Nashorn JavaScript Engine

Теги:
netbeans

1 ответ

9
Лучший ответ

Вам нужно либо запустить IDE на JDK8, либо добавить JDK8 в качестве платформы с помощью инструментов | Java Platforms. Создайте новый проект Java. После его создания убедитесь, что он использует платформу JDK8:

  • щелкните правой кнопкой мыши по проекту в окне "Проекты"
  • выберите "Свойства" → "Библиотеки" и проверьте настройку платформы JDK.

Затем вы можете:

  • создайте файл JavaScript внутри этого Java-проекта, если вы, например, щелкните правой кнопкой мыши на файле, вы можете запустить его или отладить. В этом случае он действительно запускает/отлаживает один JS файл с помощью Nashorn
  • или вы можете запустить код JavaScript из кода Java, например:

        try {
        ScriptEngineManager factory = new ScriptEngineManager();
        ScriptEngine engine = factory.getEngineByName("nashorn");
        engine.eval("function hi(){\nvar a = 'PROSPER'.toLowerCase(); \nmiddle(); \nprint('Live long and' + a)}\n function middle(){\n var b = 1; for(var i=0, max = 5; i<max;i++){\nb++;\n}\n print('b is '+b);}hi();");
    } catch (ScriptException ex) {
        Logger.getLogger(SampleRunner.class.getName()).log(Level.SEVERE, null, ex);
    }
    
  • или вы можете загрузить JS файл в Java-код, используя:

        try {
        ScriptEngineManager factory = new ScriptEngineManager();
        ScriptEngine engine = factory.getEngineByName("nashorn");
        engine.eval("load(\"" + "src/packageName/file.js" + "\");");
    } catch (Exception ex) {
        Logger.getLogger(SampleRunner.class.getName()).log(Level.SEVERE, null, ex);
    }
    

Используя это, если вы запускаете/отлаживаете Java-проект как таковой, вы можете добавить точки останова/часы в код JavaScript, а также в код Java, как обычно, и когда код JS будет выполнен, отладчик остановится на правильных строках, независимо от того, если они принадлежат JS или Java.

Итак, если у вас есть файл JavaScript file.js, вы можете открыть его в среде IDE, добавить точку останова и когда файл будет загружен с использованием второго фрагмента выше, отладчик остановится на контрольной точке линии.

UPDATE: пример проекта здесь. Проверьте это, он содержит все известные (мне) способы отладки и запуска JS в Нашноре.

  • 0
    @ladar - в примере проекта вы знаете, остановится ли он на debugger; заявления в javascript? если да, то что еще нужно сделать? Я скачал и запустил как есть, и он не работает при запуске в IDE.
  • 0
    К сожалению, это не похоже на работу.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню