2015-10-02 92 views
2

我有一些代碼可以在從終端啓動時正常工作,但不能從eclipse中啓動。顯然,我可以使用終端,但出於調試的目的,將問題排除在外是很好的做法。此外,理解這些問題將會很好。任何人都可以解釋一下,我會解釋一下如何在eclipse中啓動與在終端中啓動的不同。 代碼:在Eclipse推出時如何在eclipse中啓動程序與在終端中啓動程序不同?

static public Process getNewLiEProcess(boolean redirect){ 
    ProcessBuilder proc = new ProcessBuilder("lie"); 
    proc.redirectErrorStream(redirect); 
    try { 
    return proc.start(); 
    // TODO: figure out why this consistently fails when run in Eclipse console, 
    // even though it seems to work when run in terminal. 
    } catch (IOException e) { 


    e.printStackTrace(); 
    return null; 
    } 
} 

錯誤消息:

java.io.IOException: Cannot run program "lie": error=2, No such file or directory 
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1047) 
    at edu.siu.math.egut.io.LiE.getNewLiEProcess(LiE.java:224) 
    at edu.siu.math.egut.io.LiE.<init>(LiE.java:198) 
    at edu.siu.math.egut.main.CharacterAction.main(CharacterAction.java:106) 
Caused by: java.io.IOException: error=2, No such file or directory 
    at java.lang.UNIXProcess.forkAndExec(Native Method) 
    at java.lang.UNIXProcess.<init>(UNIXProcess.java:184) 
    at java.lang.ProcessImpl.start(ProcessImpl.java:130) 
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1028) 
    ... 3 more 
Exception in thread "main" java.lang.NullPointerException 
    at edu.siu.math.egut.io.LiE.<init>(LiE.java:202) 
    at edu.siu.math.egut.main.CharacterAction.main(CharacterAction.java:106) 

當使用終端啓動,相同的代碼成功實例化「謊言」過程(程序「謊言」是在USR/bin中我的系統)。

回答

1

的差異可能來自於:

  • 用於執行程序
  • 環境變量,尤其是CLASSPATHJAVA_HOMEPATHLD_LIBRARY_PATH(僅舉幾例)
  • 不同的java二進制標誌傳遞到java
  • 工作目錄

重要的是您始終完全理解您的程序在上述因素方面的要求。 知道了所有這些之後,無論您是從命令行執行還是從Eclipse執行,都需要驗證是否正確設置了需求。

如果你可以使命令行上的東西工作, 那麼困難的部分就完成了。 在命令行上它很容易驗證您的環境:

  • java -version驗證java二進制使用
  • env | sort | less驗證環境變量在使用
  • 傳遞給java的標誌是正確的,在你執行
  • pwd命令來驗證工作目錄

通常情況下,當事情從Eclipse運行而不是從命令行運行時,其他方式很難弄清楚, 。 驗證相同的細節需要深入瞭解Eclipse, 以及菜單和項目和啓動器設置中的內容。

+0

非常感謝。任何有關如何獲得「對Eclipse的良好理解,以及菜單和項目和啓動器設置中的事物」的建議將不勝感激。 –

+0

是的:使用它並繼續使用它很多;-)(其實我使用的是IntelliJ而不是Eclipse) – janos

相關問題