2016-03-23 3 views
0

Я новичок в java. Я запускаю java-программы через терминал Ubuntu Я только что начал тему Java-пакета и уже несколько часов занимаюсь проблемой. Я попытался создать простой пакет под названием pack, который имеет один класс Hello. Я создал каталог. Внутри пакета я поставил каталог каталога intp pack Hello.class черезОшибка времени выполнения пакета Java

javac -d ./pack Hello.java 

команда. Затем я включил пакет пакетов в класс, содержащий основной метод. Имя класса является тестом и находится в файле test.java. Этот класс находится в другом каталоге. Я скомпилирую через

javac -cp ./pack test.java 

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

java -cp ./pack test 

это дает мне

Error: Could not find or load main class test 

Когда я попытался

java test 

команды. Появилось следующее сообщение:

Exception in thread "main" java.lang.NoClassDefFoundError: pack/Hello 
at test.main(test.java:6) 
Caused by: java.lang.ClassNotFoundException: pack.Hello 
at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
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) 
... 1 more 

Может кто-нибудь объяснить мне, что я делаю неправильно? Буду признателен за любую оказанную помощь.

Извините, я включил мои исходные коды. Вот они.

import pack.Hello; 
public class test 
{ 
    public static void main(String args[]) 
    { 
     Hello.HelloMessage(); 
    } 
} 

Это файл test.java, который проверяет, все ли в порядке. Он расположен по адресу

/home/uesername/apps 

Справочник.

Затем я создал каталог «pack». Полный путь к каталогу пакетов:

home/username/apps/pack 

Внутри «пакета» я помещаю файл Hello.java. Содержание Hello.java файла

package pack; 
public class Hello 
{ 
    public static void HelloMessage() 
    { 
     System.out.println("hello, world"); 
    } 
} 
+0

«Я создал пакет каталога. Внутри пакета я поставил файл пакета Hello.class intp pack». '-d' flag создает структуру пакета, так как вы не делаете этого самостоятельно – Ramanlfc

+0

Можете ли вы показать исходный код. Нам нужно, по крайней мере, (от test.java) строку, начинающуюся с «package» и строки «import» s Hello. И из Hello.java нам нужна строка, начинающаяся с «package». –

ответ

2

Для начала я предлагаю вам использовать IDE для установки вы среда для компиляции, запуска и отладки.

Проблема заключается в том, что вы скомпилировали неправильный путь.

javac -cp . pack/Hello.java 
javac -cp . pack/test.java 

и

java -cp . pack.Hello 

или

java -cp . pack.test 

Проблема заключается в том, что вы собрали класс с пакетом pack в директории pack и вы бы в конечном итоге с

pack/pack/Hello.class 

Предлагаю вам проверить, где был помещен файл Hello.class.

+0

Вы правы. Файл Hello.class находится в каталоге pack/pack. Я скопировал его в каталог pack. Но когда я вхожу в java-команду, он все равно дает мне сообщения об ошибках –

+0

@olzhabala вы запустили команду 'java', которую я предложил? –

+0

@olzhabala, поэтому я предлагаю использовать IDE, которая будет настраивать каталоги для вас, компилировать и запускать код и облегчать его также отладку. Я использую IntelliJ Community Edition. –

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