Нужна помощь в программировании на Java!

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

Исключение в потоке «основной» java.lang.NoClassDefFoundError: HelloWorld Вызвано: java.lang.ClassNotFoundException: HelloWorld в java.net.URLClassLoader$1.run(URLClassLoader.java:217) в java.security.AccessController.doPrivileged (собственный метод ) в java.net.URLClassLoader.findClass(URLClassLoader.java:205) в java.lang.ClassLoader.loadClass(ClassLoader.java:321) в sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) в java .lang.ClassLoader.loadClass(ClassLoader.java:266) Не удалось найти основной класс: HelloWorld. Программа будет закрыта.

Я использую Ubuntu версии 10.04, я создал программу с помощью geany и скомпилировал ее в терминале с помощью команды javac HelloWorld.java. Затем я запустил его в терминале с помощью команды: java HelloWorld, а затем появилась ошибка выше. мой файл HelloWorld.java выглядит так:

public class  HelloWorld {

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

то мой файл HelloWorld.class выглядит так:

public static void main(string[] args)

person kolton    schedule 12.07.2011    source источник
comment
java -classpath . HelloWorld должен работать, если HelloWorld.class находится в вашем текущем рабочем каталоге.   -  person biziclop    schedule 13.07.2011


Ответы (5)


Вам либо нужно запустить команду java непосредственно из каталога, содержащего ваш файл .class, либо вам нужно определить путь к классам, то есть место, где JVM может найти ваш скомпилированный класс Java. Пытаться:

java -classpath <directory> HelloWorld

где <directory> — это (относительный) путь к каталогу, содержащему ваш файл HelloWorld.class.

person Jeen Broekstra    schedule 12.07.2011
comment
я попытался ввести: java -classpath '/home/(user)/Desktop/java1' HelloWorld, но я дал мне эту ошибку: Исключение в потоке main java.lang.ClassFormatError: несовместимое магическое значение 1886741100 в файле класса HelloWorld на java.lang. ClassLoader.defineClass1(собственный метод) в java.lang.ClassLoader.defineClass(ClassLoader.java:634) в java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) в java.net.URLClassLoader.defineClass(URLClassLoader.java: 277) в java.net.URLClassLoader.access$000(URLClassLoader.java:73) в java.net.URLClassLoader$1.run(URLClassLoader.java:212) - person kolton; 13.07.2011

Проверьте, какая JVM установлена ​​в вашей системе. У меня была такая же проблема с OpenJDK. После его удаления и установки Oracle JDK проблема исчезла. Вы также можете указать правильный путь JDK в Project > Properties > Build > Execute Commands. Например, $JAVA_HOME/bin/java "%e" для команды "Выполнить".

person zergius    schedule 12.01.2012

Когда вы запускаете свою программу, похоже, вы набираете:

java HelloWorld.class

вместо

java HelloWorld

Когда я попробовал это, это сработало, как и предполагалось, за исключением случаев, когда я включил «.class», что привело к ошибке, которую вы вставили.

person visum    schedule 12.07.2011

Основываясь на вашем ответе на решение Джин Брокстра, я бы посоветовал просмотреть ваш код на предмет "наклонных" цитат - См. здесь.

Затем попробуйте скомпилировать: javac HelloWorld.class
и снова запустить: java -classpath '/home/(user)/Desktop/java1' HelloWorld
.

person threenplusone    schedule 13.07.2011

У меня была такая же проблема в Geany. Я понял, что нажимаю на опцию «Создать» (на моей панели инструментов она выглядит как кирпич) вместо «Скомпилировать» (синий многогранник преобразован в красную сферу).

person giraffe.guru    schedule 01.04.2014