首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Nashorn -在Nashorn中运行调试javascript

Nashorn -在Nashorn中运行调试javascript
EN

Stack Overflow用户
提问于 2014-11-05 10:12:47
回答 1查看 2K关注 0票数 1

我用eclipse露娜作为IDE。我在网络应用程序工作。当我用javascript编写代码时,有时我忘了放分号,但是如果我的javascript在浏览器中运行,一切都会很好。

但是当我在nashorn中运行javascript时,它会抛出一个错误,因为我没有放分号。

错误说s

纳什霍恩错误::1:68预期;但发现变量.... ...在第68栏的第1行

问题是,控制台总是在第1行向我显示错误,我想是因为nashorn将我的javascript文件作为一行读取,但实际上我的javascript文件包含了很多行。

很难找到错误,因为控制台总是说错误位于第1行。

我知道我的代码有问题,但我不知道如何修复它。

Nashorn.java

代码语言:javascript
复制
public class Nashorn {

    public Nashorn() {
    }

    public static String readFileAsText(String theUrl){
        String allLine = "";
        try {
            URL url = new URL(theUrl);
            BufferedReader in = new BufferedReader(new InputStreamReader( url.openStream()));

            String inputLine = "";
            while ((inputLine = in.readLine()) != null){
                allLine += inputLine;
                //System.out.println("read : "+inputLine);
            }
            in.close();
        } catch (MalformedURLException e) {
            System.out.println("url Error: ");
        } catch (IOException e) {
            System.out.println("I/O Error: ");
        }
        return allLine;
    }

    public static void main(String[] args) {
        ScriptEngineManager scriptEngineManager = new ScriptEngineManager(null);
        ScriptEngine scriptEngine = scriptEngineManager.getEngineByName("nashorn");

        try {
            //readFileAsText
            String room = Nashorn.readFileAsText("http://localhost:8080/monsterpuzzle/data/Room.js");
            scriptEngine.eval( room );
        } catch (Exception e) {
            // TODO Auto-generated catch block
            System.out.println("nashorn Error: "+e.getMessage());
            e.printStackTrace();
        }
    }
}

Room.js

代码语言:javascript
复制
var Room = function(){
    this.test = function(){
        print("lalala");
    };
}

var room = new Room();
room.test();

我的问题:

纳什霍恩总是在第1行向我显示错误,但是,错误不是在第1行,而是在另一行。我认为这是因为nashorn将我的整行代码读成一行代码。

我的问题:

怎么解决这个问题?

(因此,如果第6行出现错误,控制台将在第6行而不是第1行中表示错误)

EN

回答 1

Stack Overflow用户

发布于 2014-11-06 17:17:59

您的JavaScript以一行结尾,因为您正在将其设为一行。

代码语言:javascript
复制
while ((inputLine = in.readLine()) != null){
    allLine += inputLine;
    //System.out.println("read : "+inputLine);
}

试试这个:

代码语言:javascript
复制
while ((inputLine = in.readLine()) != null){
    allLine += inputLine + "\n"; /* ADD NEWLINE CHARACTER AT END OF LINE */
    //System.out.println("read : "+inputLine);
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26754510

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档