gpt4 book ai didi

java - Nashorn - 调试在 Nashorn 中运行的 javascript

转载 作者:行者123 更新时间:2023-11-29 05:15:22 29 4
gpt4 key购买 nike

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

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

错误说 s

nashorn Error: :1:68 Expected ; but found var ..... ... ... in at line number 1 at column number 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);
}

关于java - Nashorn - 调试在 Nashorn 中运行的 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26754510/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com