Ошибка NOClassDefFound при запуске простой Java-программы - PullRequest
0 голосов
/ 25 октября 2009

Этот код прекрасно компилируется, но всякий раз, когда я пытаюсь его запустить, он выдает ошибку, говорит 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 ]

1 голос
/ 25 октября 2009

Убедитесь, что вы находитесь в каталоге, в котором находится папка myPack. Вы не должны быть в папке myPack. Я только что попробовал это на моем компьютере с Linux, и похоже, что он автоматически включал рабочую папку в classpath, но только если переменная среды CLASSPATH НЕ установлена. Если он установлен, вам следует либо добавить в него текущую папку, либо указать путь к классу в командной строке следующим образом:

java -cp . myPack.PasswordVerification
1 голос
/ 25 октября 2009

Вы уверены, что звоните с правильным префиксом имени пакета (т.е. "java myPack.PasswordVerification")?

Также есть некоторые улучшения, которые вы можете сделать-

  • Тестирование строковой переменной, лучше проверить константу по переменной- например if ("prajnut" .equals (userId), а не if (userId.equals), так как первая форма неуязвима к исключениям NullPtrException, если вы передаете пустую строку.
  • Вы можете упростить, удалив предложение "else" - вам действительно нужна только 1 строка

    вернуть "prajnut" .equals (id) && "password" .equals (pass):

0 голосов
/ 25 октября 2009

Убедитесь, что вы находитесь в корневом проекте.

если вы наберете «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"));
    }

}
...