2009-10-25 110 views
0

這段代碼編譯得很好,但是每當我嘗試運行時,它都會給出一個錯誤,說NoClassDefFound。請解釋一下可能的原因和解決方案。運行一個簡單的java程序時發現NOClassDefFound錯誤

package myPack; 

public class PasswordVerification 
{ 
    public boolean verify(String usrId, String pass) 
    { 
     if(usrId.equals("pranjut")&&pass.equals("password")) 
     { 
      return true; 
     }else 
     { 
      return false; 
     } 
    } 

    public static void main(String [] main) 
    { 
     PasswordVerification vp=new PasswordVerification(); 
     System.out.println(vp.verify("pranjut","password")); 
    } 

} 
+0

如何運行程序? – Nettogrof

+2

請告訴我,這不是你的代碼*真*看起來如何: -/ – 2009-10-25 03:06:17

+0

我試過java密碼驗證和java myPack.PasswordVerification – Cuss

回答

1

您確定使用正確的包名稱前綴(即「java myPack.PasswordVerification」)調用嗎?

此外,也有一些改進,你可以make-

  • 測試一個字符串變量,更好地測試對可變 例如恆如果(「prajnut」.equals(userId)而不是if(userId.equals))作爲第一種形式免疫於NullPtrExceptions(如果您碰巧傳入一個空字符串)
  • 您可以通過刪除「else」條款 - 你真的只需要1線

    回報 「prajnut」 .equals(ID)& & 「密碼」 .equals(合格):

+0

雅我相當肯定 – Cuss

0

確保你在根項目。

如果您鍵入「dir」(windows)或「ls」其他類Unix操作系統,y ou應該看到一個目錄名稱「myPack」。

然後輸入java myPack.PasswordVerification

這裏有些建議,代碼更優秀,尊重Java coding conventions

package myPack; 

public class PasswordVerification{ 


    public boolean verify(String usrId, String pass){ 
     if("pranjut".equals(usrId) && "password".equals(pass)){ 
      return true; 
     } 
     return false; 

    } 

    public static void main(String[] main){ 
     PasswordVerification vp=new PasswordVerification(); 
     System.out.println(vp.verify("pranjut","password")); 
    } 

} 
+0

其實我編譯這樣的代碼javac -d \ newfolder \ classes PassworedVerification.java,然後我去導演c:\ newfolder \ classes然後我鍵入java myPack.PasswordVerification ....但它會拋出NOClassDefFound錯誤。 – Cuss

+0

就像你的軟件包是「myPack」一樣,你需要一個名爲「myPack」的目錄並將你的.class文件放入其中。 – Nettogrof

1

確保您在包含myPack文件夾的目錄。你不應該在myPack文件夾中。我只是在我的linux機器上試過它,它看起來像自動將工作文件夾包含在類路徑中,但只有在未設置CLASSPATH環境變量的情況下。如果已設置,則應該將當前文件夾添加到該文件夾​​中,或者在命令行上指定類路徑,如下所示:

java -cp . myPack.PasswordVerification 
相關問題