如何在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"); System.out.println(name+ ": $:" +bal); } } class AccountBalance { public static void main(String args[]) { Balance current[]=new Balance[3]; current[0]=new Balance("AKJuwatkar",123.123); current[1]=new Balance("APDhoke",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,请帮助我

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

首先用javac编译:

 $javac MyPack/AccountBalance.java 

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

然后你可以运行它:

 $java MyPack.AccountBalance 

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

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

 javac -d "classes" AccountBalance.java 

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

 java -classpath "classes" MyPack.AccountBalance 

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

 javac YourFileName.java -d . 

并运行,

 java MyPack.AccountBalance 

看看javac工具

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

和包教程。

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

 javac MyJavaClass.java && java MyJavaClass 

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

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