Ошибка при запуске Java-программы: java.lang.NoClassDefFoundError - PullRequest
0 голосов
/ 06 октября 2011

У меня есть следующая структура пакета, где я пытаюсь запустить пример приложения гибернации

Исходные файлы: /home/chander/workspace/HibernateApp/src/com/hib/TranslateSQL.java

Мой текущий каталог:

/home/chander/workspace/HibernateApp/src

Компиляция: $JAVA_HOME/bin/javac com/hib/*.java --- Это успешно выполнено

Выполнить: $JAVA_HOME/bin/java com/hib/TranslateSQL Предоставить следующее исключение:

Exception in thread "main" java.lang.NoClassDefFoundError: TranslateSQL (wrong name: com/hib/TranslateSQL)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
    at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:315)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
Could not find the main class: TranslateSQL.  Program will exit.

У меня установлены classpath и JAVA_HOME.Кажется, я не вижу, что не так с моей командой.

Также пробовал следующую команду:

$JAVA_HOME/bin/java com.hib.TranslateSQL

Получил следующее исключение:

Exception in thread "main" java.lang.NoClassDefFoundError: com/hib/TranslateSQL
Caused by: java.lang.ClassNotFoundException: com.hib.TranslateSQL
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:315)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
Could not find the main class: com.hib.TranslateSQL.  Program will exit.

Ответы [ 2 ]

2 голосов
/ 06 октября 2011

Вы неправильно указали имя класса. Вместо этого:

$JAVA_HOME/bin/java com/hib/TranslateSQL

вы должны работать:

$JAVA_HOME/bin/java com.hib.TranslateSQL

Вы должны указать имя класса , которое находится внутри пакета (com.hib), а не имя файла в структуре каталогов (com/hib.)

РЕДАКТИРОВАТЬ: Если это не работает, ваш путь к классу может быть установлен неправильно. Вы можете указать это в командной строке:

$JAVA_HOME/bin/java -cp . com.hib.TranslateSQL
0 голосов
/ 06 октября 2011

Я получил его на работу, выполнив это:

cd  /home/chander/workspace/HibernateApp/src/com/hib/

export CLASSPATH=$CLASSPATH:/home/chander/workspace/HibernateApp/src/

$JAVA_HOME/bin/java com.hib.TranslateSQL
...