【问题标题】:NOClassDefFound error while running a simple java program运行简单的 java 程序时出现 NOClassDefFounderror
【发布时间】:2009-10-25 03:00:01
【问题描述】:

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

标签: java noclassdeffounderror


【解决方案1】:

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

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

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

    return "prajnut".equals(id)&& "password".equals(pass):

【讨论】:

    【解决方案2】:

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

    java -cp . myPack.PasswordVerification
    

    【讨论】:

      【解决方案3】:

      确保您位于根项目中。

      如果您键入“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"));
          }
      
      }
      

      【讨论】:

      • 实际上我编译了这样的代码 javac -d \newfolder\classes PassworedVerification.java,然后我去director c:\newfolder\classes 然后我输入java myPack.PasswordVerification....但它会抛出 NOClassDefFound 错误。
      • 就像你的包是“myPack”你需要一个名为“myPack”的目录并将你的.class文件放在里面。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-26
      相关资源
      最近更新 更多