Я изучаю пакеты java. Я успешно создал пакетный пакет, содержащий один файл .class Hello.class. Теперь я хочу добавить еще один файл класса в один и тот же пакет. Я назвал новый класс Java, как Goodbye.java и скомпилировал его в той же директории «пакет» с помощью командыдобавление класса в пакет
javac -d ./bin Goodbye.java
. bin содержит каталог pack. компилировать Test.java файл, содержащий основную функцию через
javac -cp ./bin test.java
команды. Компиляция работает нормально. Но когда я ввожу
java test
команда. Я получаю
Hello, world
Exception in thread "main" java.lang.NoClassDefFoundError: pack/Goodbye
at test.main(test.java:9)
Caused by: java.lang.ClassNotFoundException: pack.Goodbye
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
Может кто-нибудь объяснить, что я сделал не так в этом случае? Я работаю над ubuntu 14.04 и делаю все в терминале.
Оба Hello.java и Goodbye.java файлы находятся в каталоге
/home/username/apps/src
. Соответствующие файлы классов находятся внутри
/home/username/apps/bin/pack
каталог. pack был создан
javac -d ./bin
команда. Содержание Hello.java файла
package pack;
public class Hello
{
public static void HelloMessage()
{
System.out.println("hello, world");
}
}
Он работает нормально. Для его соответствующий файл класса загружается Содержание Goodbye.java файла
package pack;
public class Goodbye
{
public static void message()
{
System.out.println("bye");
}
}
test.java файл, который импортирует пакет находится в/главная/имя пользователя/каталога приложений. Он имеет следующие строки кода
import pack.*;
public class test
{
public static void main(String args[])
{
Hello.HelloMessage();
Goodbye.message();
}
}
Любая помощь очень ценится.
Но почему бы вам не использовать IDE? Это облегчит вашу работу. – Hackerdarshi
У меня есть фон C++ и привык к терминалу. Мне не нравятся IDE для неизвестного резонанса –
Я думаю, хорошо знать, как это работает в командной строке. Это дает более глубокое понимание в конце, даже при работе исключительно с IDE позже. – vanje