如何在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指定单独的目标目录(请参阅下面的选项)。
和包教程。
如果您经常通过javac
和java
命令进行编译和运行,那么请使用
javac MyJavaClass.java && java MyJavaClass
这将编译该类,然后运行您刚刚编译的类。
注意:将&&
替换为;
如果使用Windows PowerShell。