如何在java中编译包?

时间:2012-05-11 06:48:42

标签: 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&amp; 当我使用

编译它时
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,请帮助我

4 个答案:

答案 0 :(得分:36)

最好是从包外编译和运行类:

首先用javac编译:

$javac MyPack/AccountBalance.java

这将在MyPack文件夹中创建一个名为AccountBalance.class

的新文件

然后你可以运行它:

$java MyPack.AccountBalance

顺便说一下:不鼓励包裹名称以大写字母开头。

答案 1 :(得分:15)

当您尝试编译java类时,请使用'-d'选项(destination)指定.class文件的位置。

javac -d "classes" AccountBalance.java

当您运行程序时,请确保类路径中包含相同的文件夹:

java -classpath "classes" MyPack.AccountBalance

答案 2 :(得分:5)

尝试创建名为MyPack的文件夹并在其中移动.class文件,或使用以下命令行编译java代码,并将.class文件移动到MyPack文件夹中。

javac YourFileName.java -d .

并使用

运行
java MyPack.AccountBalance

查看javac工具

  

从工具doc:默认情况下,编译器将每个类文件放在同一目录中   它的源文件。您可以使用指定单独的目标目录   -d(参见下面的选项)。

package教程。

答案 3 :(得分:3)

如果您经常通过javacjava命令进行编译和运行,请使用

javac MyJavaClass.java && java MyJavaClass

这将编译该类,然后运行刚刚编译的类。

注意:如果使用Windows PowerShell,请将&&替换为;