Я использую eclipse luna как IDE. Я работаю в веб-приложении. Когда я код в javascript, иногда я забываю поставить точку с запятой, но все по-прежнему работает нормально, если мой javascript запускается в браузере.Nashorn - debug javascript run in Nashorn
Но когда я запускаю мой JavaScript в Nashorn, он выдаст ошибку, потому что я не поставил точку с запятой
ошибку говорят с
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)
К сожалению, я никогда не использовал Насхорн поэтому я могу только попытаться дать вам советы ... как правило, когда мы видим ошибки в строке 1 это потому, что Javascript был минимизирован. Может быть, есть какой-то вариант в nashorn/eclipse, чтобы включить автоматическую мини-фильтрацию, и этот вариант был бы включен? – Joel