如何在Netbeans的Nashhorn(JDK 8+)中调试JavaScript?

Ale*_*lex 5 javascript netbeans

我看到最新的Netbeans 8.0 beta提供了一种调试"在Nashorn中执行的JavaScript代码"的方法(参见附件)

在此输入图像描述

看到这个行动的步骤是什么?

[更新]只能通过打开文件(在任何项目之外)运行一个简单的JavaScript文件,在文件内单击,右键单击,然后选择"运行文件"选项.

在此输入图像描述

我需要提一下,快捷方式"Shift-F6"对我没用.

因此,如果有其他人知道不同的运行方式,请发布您的解决方案.

[更新2] 关于JavaScript Nashorn的新文章提到了Netbeans中的JavaScript调试

lad*_*dar 9

您需要在JDK8上运行IDE或通过Tools | Java平台将JDK8添加为Platform.创建一个新的Java项目.创建后,请确保它使用JDK8平台:

  1. 右键单击"项目"窗口中的项目
  2. 选择Properties-> Libraries并检查JDK Platform设置

接下来你可以:

  • 在这个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);
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • 或者您可以使用以下代码在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);
    }
    
    Run Code Online (Sandbox Code Playgroud)

使用这个,如果你这样运行/调试Java项目,你可以像往常一样在JavaScript代码和Java代码中添加断点/监视,当执行JS代码时,调试器将在适当的行上暂停,无论它们是否属于到JS或Java.

因此,如果你有file.jsJavaScript文件,你可以在IDE中打开它,添加行断点,当使用上面的第二个代码段加载文件时,调试器将在行断点处停止.

更新:此处提供示例项目.检查一下,它包含所有已知的(对我来说)在Nashorn中调试和运行JS的方法.