2010-02-08 73 views
-1

我跑在OS X上使用的TextMate一旦一個Java程序,我不能使用Java其他地方了。
在最簡單的方案,我得到:Textmate破壞了我的Java?異常在線程「主要」 java.lang.NoClassDefFoundError

Exception in thread "main" java.lang.NoClassDefFoundError: Gateway (wrong name: org/mcgill/telecom/Gateway)

無論我用javac -classpath . Gateway.java, java -classpath . Gateway或Eclipse或NetBeans

完全相同的程序可以在TextMate中使用CMD-R仍然運行,但在其他地方。
我的Java發生了什麼?

回答

6

我高度懷疑,一個文本編輯器這樣做。

無論如何,java -classpath . Gateway將不會工作,如果該類在包org.mcgill.telecom(文件夾結構建議)。

嘗試java -classpath . org.mcgill.telecom.Gateway,而不是從那裏org文件夾中可以看到該文件夾​​。

這裏是你可以做,以測試它的內容。

  • temp文件夾,並創建該文件夾結構:org/mcgill/telecom;
  • telecom文件夾中創建一個名爲Gateway.java的文件;
  • 複製下面你Gateway.java文件中的內容;
  • 打開命令提示符並導航到您的temp文件夾;
  • 執行javac org/mcgill/telecom/Gateway.java
  • 執行java -classpath . org.mcgill.telecom.Gateway

這就是我得到:

[email protected]:~$ cd Temp/ 
[email protected]:~/Temp$ ls 
org 
[email protected]:~/Temp$ javac org/mcgill/telecom/Gateway.java 
[email protected]:~/Temp$ java -classpath . org.mcgill.telecom.Gateway 
Oi, it works! 
[email protected]:~/Temp$ 

這裏的網關類:

package org.mcgill.telecom; 

public class Gateway { 
    public static void main(String[] args) { 
    System.out.println("Oi, it works!"); 
    } 
} 
相關問題