Почему я получаю NoClassDefFoundError при попытке запустить мое приложение? - PullRequest
0 голосов
/ 15 августа 2011

Хорошо, поэтому я делал простой Java-класс, который просто выводил бы «Hello!».Вот код:

public class Hello
{
    public static void main(String[] args)
    {
        System.out.println("Hello!");
    }
}

Я скомпилировал класс через командную строку, а затем, когда мне захотелось запустить его, он дал мне NoClassDefFoundError, предполагая, что есть проблема с classpath.Это действительно глупо, поскольку это одноклассная программа.Я перепробовал много вещей, но, похоже, ничего не решило проблему.

Как я могу это исправить?

Ответы [ 2 ]

6 голосов
/ 15 августа 2011

Вы не показали, как вы запускали код. Я думаю, что вы бежали:

java Hello.class

, который пытается запустить класс с именем Hello.class. Класс просто назван Hello, поэтому вам нужно:

java Hello

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

java -cp . Hello

Конечно, это предполагает, что вы скомпилировали код в первую очередь, используя такую ​​команду:

javac Hello.java
0 голосов
/ 15 августа 2011

У вас установлена ​​переменная окружения CLASSPATH, но она не содержит "."(точка) для представления текущего каталога (как по умолчанию.) Выполните так:

java -cp . Hello

Это «java space dash cp space dot space Hello».

Как только вы пройдете«Hello, World», вы обнаружите, что установка пути к классам становится необходимой постоянно - будь то вручную (редко в реальном мире) или в сценарии запуска, инструменте сборки или IDE.

Использование переменной среды CLASSPATH является плохим опытом с ранних дней Java.Часто вы обнаружите, что это установщик Apple QuickTime, который устанавливает его на что-то.Вы никогда не должны использовать или полагаться на эту переменную.

...