文档章节

Java_脚本引擎_02_在Idea中进行Nashorn的Debug

o
 osc_4nmshwhm
发布于 2018/08/06 16:07
字数 328
阅读 0
收藏 0

精选30+云产品,助力企业轻松上云!>>>

一、前言

本文承接上一节:Java_脚本引擎_01_用法入门

这一节我们来看下怎么在idea中进行Nashorn的Debug ,又或者说怎么在Idea中进行js的Debug

 

注:idea本身就支持js的debug,无需额外的配置。

 

二、实例

1.js

在resources/js 目录下创建 hello.js

function testScript() {
    var name = $name;
    print("name is " + name);
}

testScript();
View Code

 

2.测试类

随便找个目录创建测试类

package com.ray.jsdebug;

import org.junit.Test;

import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;

/**
 * @author : shira
 * @date : 2018/8/8
 * @time : 15:44
 * @desc :
 **/

public class HelloTest {

    @Test
    public void testHello() throws ScriptException {
        //1..创建引擎
        ScriptEngineManager scriptEngineManager = new ScriptEngineManager();
        ScriptEngine engine = scriptEngineManager.getEngineByName("nashorn");

        //2.设置参数
        engine.put("$name", "Tom");

        //3.执行脚本
        //3.1 可以进行 nashorn debug
        String jsFilePath1 = "src/main/resources/static/hello.js";

        //3.2 不能进行 nashorn debug
        String jsFilePath2 = "classpath:static/hello.js";

        //3.3 不能进行 nashorn debug
        String jsFilePath3 =  this.getClass().getClassLoader().getResource("static/hello.js").getPath();

        engine.eval("load('"+jsFilePath1+"')");



    }
}
View Code

 

 

 

注:在此处执行脚本时,必须通过load去加载脚本,才能正常debug

道理很简单,若使用文件流读取脚本,然后再执行脚本文本,这时,执行的是这个脚本文本,而不是js文件。

 

3.测试

在js中打个断点,然后再运行测试用例

 如下图,可以看到程序已经成功走到断点处。

 

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

asp.net core之NLog

NuGet添加 NLog.Web.AspNetCore。 <PackageReference Include="Microsoft.AspNetCore.App" /> 添加配置文件 新建一个文件nlog.config(建议全部小写,linux系统中要注意), 并右键点击其属性......

一介草民Coder
58分钟前
23
0
.NET中的struct和class有什么区别? - What's the difference between struct and class in .NET?

问题: .NET中的struct和class有什么区别? 解决方案: 参考一: https://stackoom.com/question/3OT/NET中的struct和class有什么区别 参考二: https://oldbug.net/q/3OT/What-s-the-differ...

富含淀粉
今天
23
0
android:layout_weight是什么意思? - What does android:layout_weight mean?

问题: I don't understand how to use this attribute. 我不明白如何使用这个属性。 Can anyone tell me more about it? 谁能告诉我更多关于它的事情? 解决方案: 参考一: https://stacko...

javail
今天
17
0
CSS背景不透明度[重复] - CSS Background Opacity [duplicate]

问题: This question already has an answer here: 这个问题已经在这里有了答案: How do I give text or an image a transparent background using CSS? 如何使用CSS为文本或图像提供透明背...

fyin1314
今天
31
0
node http 获取gb2312网页如何转为utf8

最初,我想当然认为是下述做法,但被证明是错误的 const http = require('http'), iconv = require('iconv-lite');const url = 'http://xxx';http.get(url, function(res) { var bo......

高延
今天
24
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部