Подтвердить что ты не робот

Как скомпилировать пакеты в 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, любезно помогите мне

4b9b3361

Ответ 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.