我看到最新的Netbeans 8.0 beta提供了一种调试“在Nashorn中执行的JavaScript代码”的方法(参见附件)
有什么步骤可以看到这一点?
[UPDATE] 通过打开文件(在任何项目之外),我能够运行一个简单的JavaScript文件 ,在文件内单击,右键单击,然后选择“运行文件”选项。
我需要提一下,“Shift-F6”的快捷方式对我没用。
因此,如果有其他人知道运行此方法的其他方式,请发布您的解决方案。
[更新2] 关于JavaScript Nashorn的一篇新文章提到了Netbeans中的JavaScript调试
[更新3] 似乎Nashhorn将在JDK中被弃用。见JEP 335: Deprecate the Nashorn JavaScript Engine
答案 0 :(得分:9)
您需要在JDK8上运行IDE或通过Tools | Java平台将JDK8添加为Platform。创建一个新的Java项目。创建后,请确保它使用JDK8平台:
接下来你可以:
或者您可以从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的方法。