Ошибка при запуске java-программ

#java

#java

Вопрос:

Каждая программа, которую я запускаю на Java, выдает аналогичную ошибку.

Это программа helloworld:

 Exception in thread "main" java.lang.NoClassDefFoundError: helloworld (wrong nam
e: helloworldapp)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClassCond(Unknown Source)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$000(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: helloworld.  Program will exit.
  

Комментарии:

1. Можете ли вы также показать свой код? И объясните, как вы это запускаете?

2. helloworldapp или helloworld или HelloWorld? Обратите внимание, что Java обрабатывает имена классов, чувствительные к верхнему / нижнему. Редактор = Блокнот?

Ответ №1:

Файл класса helloworld.class содержит класс с именем helloworldapp.class . Единственная реальная причина этого, о которой я могу думать, заключается в том, что вы вручную переименовали .class файл.

Это не сработает! Вызываемый класс helloworldapp должен быть найден в .class файле с именем helloworldapp.class .

Если вы хотите изменить имя класса, переименуйте .java исходный файл, отредактируйте class определение и перекомпилируйте его.

Ответ №2:

Попробуйте эту:

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

Прочитайте этот учебник об этой проблеме.

Комментарии:

1. Когда я попробовал этот код, он показал ошибку в ключевом слове class во время компиляции. Итак, я удалил ключевое слово public и успешно скомпилировал его. Когда я запускаю pgm, я получаю тот же результат .. : (

2. Эй, похоже, проблема с classpath, вы используете IDE или простой текстовый редактор? Прочитайте эту статью, она точно описывает вашу проблему: jarticles.com/package/package_eng.html

Ответ №3:

Как запустить Java-программу? Вы правильно передаете аргументы? Обратите внимание на путь к классу. Если у вас есть helloworld.файл Java и скомпилировали его в helloworld.class вы должны запустить это следующим образом (из командной строки в том же каталоге, в котором находится файл класса):

 java -cp . helloworld
  

Комментарии:

1. сначала я задал путь для компилятора java как «path=%path%;c:Program FilesJavajdkbin » . Программа не отображает сообщение Hello world!..

2. Сначала вам нужно скомпилировать файл (javac HelloWorld.java ). Это приведет к HelloWorld.class файл. Затем вы можете запустить его с помощью команды в моем ответе.

3. Вы не используете здесь завершающий или начальный пробел: " path=%path%;c:Program FilesJavajdkbin " , не так ли? Или ‘path’ в нижнем регистре вместо PATH? Вы должны быть точны в программировании.

4. Это не проблема с path! Прочитайте сообщение об ошибке! .class Файл найден, но содержит класс с неправильным именем!