Я могу скомпилировать программу Java, но не могу запустить программу Java

#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 .