Как скомпилировать пакеты в java?
Я написал простую пакетную программу:
//A simple package
package MyPack
class Balance
{
String name;
double bal;
Balance(String n, double b)
{
name=n;
bal=b;
}
void show()
{
if(bal<0)
System.out.println("-->");
System.out.println(name+ ": $:" +bal);
}
}
class AccountBalance
{
public static void main(String args[])
{
Balance current[]=new Balance[3];
current[0]=new Balance("A.K.Juwatkar",123.123);
current[1]=new Balance("A.P.Dhoke",345.67);
current[2]=new Balance("Anil Sarang",100.98);
for(int i=0;i<3;i++)
current[i].show();
}
}
Я использую Ubuntu 10.04 &
Когда я скомпилирую его с помощью
java MyPack.AccountBalance
Получаю следующее сообщение:
Exception in thread "main" java.lang.NoClassDefFoundError: MyPack/AccountBalance
Caused by: java.lang.ClassNotFoundException: MyPack.AccountBalance
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: MyPack.AccountBalance. Program will exit.
Что не так? Пожалуйста, помогите мне.
Я установил openjdk, мне нужно установить что-нибудь еще?
Я использую Ubuntu 10.04, любезно помогите мне
Ответы
Ответ 1
Лучше всего скомпилировать и запустить классы извне пакетов:
Сначала вы компилируете с помощью javac:
$javac MyPack/AccountBalance.java
это создаст новый файл в папке MyPack с именем AccountBalance.class
то вы можете запустить его:
$java MyPack.AccountBalance
Кстати: не рекомендуется начинать имена пакетов с капитала.
Ответ 2
Когда вы пытаетесь скомпилировать класс java, используйте параметр -d (destination), чтобы указать, где должны находиться файлы .class.
javac -d "classes" AccountBalance.java
и когда вы запустите свою программу, убедитесь, что одна и та же папка включена в ваш путь к классу:
java -classpath "classes" MyPack.AccountBalance
Ответ 3
Попробуйте создать папку с именем MyPack
и переместите в нее файлы .class или используйте следующую командную строку для компиляции java-кода и переместите файлы .class в папку MyPack
.
javac YourFileName.java -d .
и запустите с помощью
java MyPack.AccountBalance
Посмотрите javac tool
Из инструмента doc: по умолчанию компилятор помещает каждый файл класса в тот же каталог, что и его исходный файл. Вы можете указать отдельный каталог назначения с -d (см. Параметры ниже).
и package учебник.
Ответ 4
Если вы часто компилируете и выполняете команды javac
и java
, используйте
javac MyJavaClass.java && java MyJavaClass
Это скомпилирует класс, а затем запустит класс, который вы только что скомпилировали.
Примечание. Заменяйте &&
на ;
при использовании Windows PowerShell.