2013-12-06 2 views
0

Я не могу запустить .class файлы из CMD, и я не могу найти способ обойти сообщения об ошибках. Моя переменная установлена ​​в C: \ Program Files (x86) \ Java \ jdk1.7.0_45 \ Bin, как Java и JAVAC являются версии 1.7.0_45 и я бегу код в локальном каталоге:Не удается запустить .class файлы из CMD

C:\Java\hfjavafinalsamples\chap01> javac PhraseOMatic.java 

C:\Java\hfjavafinalsamples\chap01> java -classpath . PhraseOMatic 
Exception in thread "main" java.lang.NoClassDefFoundError: PhraseOMatic (wrong n 
ame: chap01/PhraseOMatic) 
     at java.lang.ClassLoader.defineClass1(Native Method) 
     at java.lang.ClassLoader.defineClass(ClassLoader.java:800) 
     at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:14 
2) 
     at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) 
     at java.net.URLClassLoader.access$100(URLClassLoader.java:71) 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:361) 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:425) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:358) 
     at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482) 


C:\Java\hfjavafinalsamples\chap01> 
+3

Я уверен, что есть глава о «пакетах» в chap00 или chap01 :-) –

+0

Существует, и я следовал за ним, а также другие уроки. Он не решает эту проблему. – Leon

ответ

3

Полностью квалифицированное название класса: chap01.PhraseOMatic, так как его прост имя PhraseOMatic, а его упаковка chap01.

Команда java ожидает полного имени. Основываясь на своем пути к классам и на этом полностью квалифицированном имени, он будет искать файл .class. Итак, если ваш путь к классам «.» и полное имя - chap01.PhraseOMatic, он будет искать ./chap01/PhraseOMatic. Так что это не сработает, так как вы уже находитесь в пакете папок chap01.

Путь к классам должен быть, таким образом, .., или (лучше), вы должны быть в папке hfjavafinalsamples для запуска приложения:

C:\Java\hfjavafinalsamples> java -classpath . chap01.PhraseOMatic 

Кроме того, не следует помещать исходные файлы (.java) и скомпилированный файлов (.class) в том же дереве папок. Создайте папку src, содержащую исходное дерево, и файл classes, содержащий скомпилированное дерево классов. и используйте параметр -d classes javac для компиляции классов в папку классов.

+0

Спасибо, очень много! – Leon

Смежные вопросы