我看到了最新的 Netbeans 8.0 beta提供了一种调试“在 Nashorn 中执行的 JavaScript 代码”的方法(参见附件)
查看此操作的步骤是什么?
[更新] 我只能通过打开文件(在任何项目之外)运行一个简单的 JavaScript 文件,在文件内部单击,右键单击,然后选择“运行文件”选项。
我需要指出快捷方式“Shift-F6”对我不起作用。
因此,如果其他人知道运行它的不同方式,请发布您的解决方案。
[更新 2] 关于 JavaScript Nashorn 的新文章提及 Netbeans 中的 JavaScript 调试
[更新 3] 似乎 Nashhorn 将在 JDK 内部被弃用。参见 JEP 335: Deprecate the Nashorn JavaScript Engine
最佳答案
您需要在 JDK8 上运行 IDE,或者通过工具|Java 平台将 JDK8 添加为平台。创建一个新的Java 项目。创建后,确保它使用 JDK8 平台:
- 在“项目”窗口中右键单击项目
- 选择属性->库并检查 JDK 平台设置
接下来你可以:
- 在这个 Java 项目中创建一个 JavaScript 文件,例如,如果您右键单击该文件,您可以运行它或调试它。在这种情况下,它实际上会使用 Nashorn 运行/调试单个 JS 文件
或者您可以从 Java 代码开始 JavaScript 代码,例如:
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); }
或者您可以使用 Java 代码加载 JS 文件:
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。
因此,如果您有 file.js
JavaScript 文件,您可以在 IDE 中打开它,添加行断点,当使用上面的第二个代码片段加载文件时,调试器将在行断点处停止.
更新:示例项目可用here .检查一下,它包含所有已知的(对我而言)在 Nashorn 中调试和运行 JS 的方法。
关于javascript - 如何在 Netbeans 的 Nashorn (JDK 8+) 中调试 JavaScript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22017086/