簡體   English   中英

運行簡單的Java程序時出現NOClassDefFound錯誤

[英]NOClassDefFound error while running a simple java program

這段代碼可以很好地編譯,但是每當我嘗試運行時,都會顯示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"));
    }

}

您確定使用正確的軟件包名稱前綴(即“ java myPack.PasswordVerification”)進行呼叫嗎?

此外,您可以進行一些改進-

  • 測試字符串變量,最好是針對變量測試常量,例如if(“ prajnut” .equals(userId)而不是if(userId.equals),因為如果您碰巧傳入空值,則第一種形式不受NullPtrExceptions的影響串。
  • 您可以通過刪除“ else”子句來簡化-您實際上只需要1行

    返回“ prajnut” .equals(id)&&“ password” .equals(pass):

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

java -cp . myPack.PasswordVerification

確保您在根項目中。

如果您在其他類似Unix的操作系統中鍵入“ dir”(Windows)或“ ls”,則應該看到目錄名稱“ myPack”。

然后輸入java myPack.PasswordVerification

這里有一些建議可以更好地編碼並遵守Java編碼約定

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"));
    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM