2014-11-05 45 views
1

我使用eclipse luna作爲IDE。我正在從事Web應用程序。 當我在JavaScript中編碼時,有時我忘記放分號,但如果我的JavaScript在瀏覽器中運行,所有東西仍然正常工作。Nashorn - 調試JavaScript運行在Nashorn

但是當我在犀牛運行我的JavaScript,它會拋出一個錯誤,因爲我並沒有把分號

錯誤們的說法

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(); 

我的問題:

犀牛總是顯示在我行號1,錯誤但是,該錯誤不在行號1中,而是在另一行中。我認爲這是因爲nashorn將我的整行代碼讀爲單行。

我的問題:

如何解決這一問題?

(所以如果在第6行錯誤,控制檯會說,在第6行誤差不1號線),因爲你正在上一行

+0

對不起,我從來沒有用過犀牛,所以我只能儘量給你提示...通常,當我們看到在1號線這是因爲JavaScript是精縮錯誤。也許在nashorn/eclipse中有一些選項可以啓用自動縮小功能,並且此選項已打開? – Joel 2014-11-05 10:52:32

回答

3

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); 
} 
+0

長時間迴應道歉..我認爲沒有人在這裏..我已經嘗試過你的代碼之前,但仍然有錯誤..而是閱讀所有的線..我最終與eval(「負載('」+ myFile +「' );「); – user3578021 2014-11-22 13:08:04

相關問題