26

私は簡単なパッケージプログラムを書きました:


  //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();
               }
        }

私はUbuntu10.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をインストールしましたが、他に何かインストールする必要がありますか?私はUbuntu10.04を使用しています、親切に助けてください

4

4 に答える 4

39

パッケージの外部からクラスをコンパイルして実行するのが最善です。

まず、javacでコンパイルします。

$javac MyPack/AccountBalance.java

これにより、AccountBalance.classという名前の新しいファイルがMyPackフォルダーに作成されます。

その後、それを実行することができます:

$java MyPack.AccountBalance

ちなみに、パッケージ名を大文字で始めることはお勧めしません。

于 2012-05-11T07:09:20.063 に答える
17

Javaクラスをコンパイルする場合は、「-d」オプション(宛先)を使用して、.classファイルを配置する場所を指定します。

javac -d "classes" AccountBalance.java

プログラムを実行するときは、同じフォルダがクラスパスに含まれていることを確認してください。

java -classpath "classes" MyPack.AccountBalance
于 2012-05-11T07:10:52.933 に答える
6

名前の付いたフォルダを作成し、そのMyPack中に.classファイルを移動するか、次のコマンドラインを使用してJavaコードをコンパイルすると、.classファイルがMyPackフォルダに移動さ​​れます。

javac YourFileName.java -d .

を使用して実行し、

java MyPack.AccountBalance

javacツールを見てください

ツールドキュメントから:デフォルトでは、コンパイラは各クラスファイルをソースファイルと同じディレクトリに配置します。-dを使用して別の宛先ディレクトリを指定できます(以下の「オプション」を参照)。

パッケージのチュートリアル。

于 2012-05-11T06:52:50.040 に答える
3

javacjavaコマンドを頻繁にコンパイルして実行している場合は、

javac MyJavaClass.java && java MyJavaClass

これにより、クラスがコンパイルされ、コンパイルしたばかりのクラスが実行されます。

注:WindowsPowerShellを使用&&している場合はに置き換えます。;

于 2016-10-02T02:31:55.083 に答える