Nashorn-调试在Nashorn中运行的javascript

Nashorn-调试在Nashorn中运行的javascript,java,javascript,nashorn,Java,Javascript,Nashorn,我使用EclipseLuna作为IDE。我在web应用程序部门工作。 当我用javascript编写代码时,有时我会忘记输入分号,但如果我的javascript在浏览器中运行,一切仍然正常 但当我在nashorn中运行javascript时,它会抛出一个错误,因为我没有输入分号 错误是s nashorn错误::预期为1:68;但是发现了var。。。在里面 第1行第68列 问题是,控制台总是在第1行向我显示错误,我认为这是因为nashorn将我的javascript文件读取为单行,但实际上我的ja

我使用EclipseLuna作为IDE。我在web应用程序部门工作。 当我用javascript编写代码时,有时我会忘记输入分号,但如果我的javascript在浏览器中运行,一切仍然正常

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

错误是s

nashorn错误::预期为1:68;但是发现了var。。。在里面 第1行第68列

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

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

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

Nashorn.java

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

var Room = function(){
    this.test = function(){
        print("lalala");
    };
}

var room = new Room();
room.test();
我的问题:

Nashorn总是在第1行向我显示错误。但是,错误不在第1行,而是在另一行。我认为这是因为nashorn将我的整行代码作为一行来阅读

我的问题:

如何解决这个问题


(因此,如果第6行出现错误,控制台会说第6行出现错误,而不是第1行)

您的JavaScript将以一行结束,因为您将它设为一行

while ((inputLine = in.readLine()) != null){
    allLine += inputLine;
    //System.out.println("read : "+inputLine);
}
试试这个:

while ((inputLine = in.readLine()) != null){
    allLine += inputLine + "\n"; /* ADD NEWLINE CHARACTER AT END OF LINE */
    //System.out.println("read : "+inputLine);
}

对不起,我从来没有用过纳肖恩,所以我只能试着给你一些提示。。。通常,当我们在第1行中看到错误时,是因为javascript被缩小了。也许在nashorn/eclipse中有一些选项可以启用自动缩小,而这个选项应该已经打开了?很抱歉响应时间太长。。我想这里没有人。。我以前已经尝试过你的代码,但仍然有错误。。而是通读所有的句子。。我以eval(“load(“+myFile+”);”)结束;