0

这段代码编译得很好,但是每当我尝试运行时,它都会给出错误提示 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"));
    }

}
4

3 回答 3

1

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

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

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

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

于 2009-10-25T03:05:03.227 回答
1

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

java -cp . myPack.PasswordVerification
于 2009-10-25T03:32:10.053 回答
0

确保您位于根项目中。

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

}
于 2009-10-25T03:24:49.537 回答