运行简单的java程序时NOClassDefFounderror

时间:2009-10-25 03:00:02

标签: java noclassdeffounderror

这段代码编译正常,但每当我尝试运行时,它会给出一个错误,说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"));
    }

}

3 个答案:

答案 0 :(得分:1)

您确定要使用正确的包名称前缀(即“java myPack.PasswordVerification”)进行呼叫吗?

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

  • 测试字符串变量,更好地测试变量的常量 - 例如if(“prajnut”.equals(userId)而不是if(userId.equals),因为如果碰巧传入空字符串,第一种形式对NullPtrExceptions免疫。
  • 您可以通过删除“else”条款来简化 - 您实际上只需要1行

    返回“prajnut”.equals(id)&& “密码” .equals(通):

答案 1 :(得分:1)

确保您位于包含myPack文件夹的目录中。您不应该在myPack文件夹中。我只是在我的linux机器上尝试过,看起来它自动包含在类路径中的工作文件夹,但前提是没有设置CLASSPATH环境变量。如果已设置,则应该将当前文件夹添加到其中,或者在命令行上指定类路径,如下所示:

java -cp . myPack.PasswordVerification

答案 2 :(得分:0)

确保您在根项目中。

如果你键入“dir”(windows)或“ls”其他类Unix操作系统,你应该看到目录名“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"));
    }

}