我用eclipse露娜作为IDE。我在网络应用程序工作。当我用javascript编写代码时,有时我忘了放分号,但是如果我的javascript在浏览器中运行,一切都会很好。
但是当我在nashorn中运行javascript时,它会抛出一个错误,因为我没有放分号。
错误说s
纳什霍恩错误::1:68预期;但发现变量.... ...在第68栏的第1行
问题是,控制台总是在第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();我的问题:
纳什霍恩总是在第1行向我显示错误,但是,错误不是在第1行,而是在另一行。我认为这是因为nashorn将我的整行代码读成一行代码。
我的问题:
怎么解决这个问题?
(因此,如果第6行出现错误,控制台将在第6行而不是第1行中表示错误)
发布于 2014-11-06 17:17:59
您的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);
}https://stackoverflow.com/questions/26754510
复制相似问题