#java #linux
#java #linux
Вопрос:
Когда я запускаю программу Java, она выдает следующую ошибку:
Exception in thread "main" java.lang.NoClassDefFoundError: check
Caused by: java.lang.ClassNotFoundException: check
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: check. Program will exit.
Исходный код:
import java.io.*;
class check {
public static void main (String [] args)
{
System.out.println("Hello");
}
}
~
~
Комментарии:
1. Когда вы запускаете какую программу Java?
2. Вы запускаете какую Java-программу, когда?
3. Как выглядел исходный код вашей программы? Вы включили
public static void main(String args[]) { ... }
определение функции в класс, который пытаетесь выполнить? Как именно вы скомпилировали, а затем попытались запустить свою программу?4. Покажите свой исходный код. Это означает, что с вашей программой что-то не так.
5. импорт java.io .*; проверка класса { public static void main (строка [] аргументов) { System.out.println(«Привет»); } } ~ ~
Ответ №1:
У вас CLASSPATH
установлена переменная среды, и она не включает .
(точка), текущий каталог. Попробуйте это
java -cp . check
(Это проверка пробела Java space dash cp space dot space).
Комментарии:
1. Как я могу это исправить, classpath отсутствует в .bashrc. В .bashrc у меня есть путь экспорта =$PATH:~/j2sdk1.6.0.18/bin
2. Он может быть установлен в
.profile
, или/etc/profile
, или/etc/bashrc
, или, возможно, в других местах, в зависимости от того, как настроена ваша система.3. Вы не исправляете это. Вы используете -cp соответствующим образом каждый раз.
4. ИМО, он должен это исправить — он должен полностью удалить его. Настройка
CLASSPATH
в среде практически всегда является плохой идеей. В этом случае по умолчанию будет просто.
; чтобы искать где-нибудь еще,-cp
потребуется.
Ответ №2:
Пожалуйста, попробуйте сначала задать путь к классу, затем скомпилировать и выполнить класс, тогда ваша проблема будет решена.
Например, в командной строке:
C:> setclasspath=%classpath%;.;
C:> javac check.java
C:> java check
Теперь вы получите вывод в виде Hello
.