java 超基础问题 搞不明白啊

来源:百度知道 编辑:UC知道 时间:2024/09/23 10:59:20
我的classpath中除了因该有的路径外 还加了C:\;
为什么我在 c:/test文件夹内 建了一个aa.java文件内容如下
package test;

public class aa{
public static void main(String[] args){

System.out.println("dfdf");
}
}

我什么我编译的时候通过 但是运行的时候就出现如下错误:
Exception in thread "main" java.lang.NoClassDefFoundError: aa (wrong name: test/
aa)

但是如果我将文件中的 package test;去掉的话 则便宜和运行多没问题

请大家帮我解答一下吧 如果能说明白我再加分!!

估计是你运行的命令不对,正确的命令是:
java test.aa
而不是
java test/aa
test.aa为aa类的全称,运行时必须用全称,即包名.类名

你在你的C:\test目录下再建一个文件夹也命名为test ,然后把生成的.class文件放在该文件夹内即C:\test\test,然后运行该class文件就可以了。这与java的执行机制有关

你在dos窗口下,运行:
c:
cd\
java test.aa
这样就能运行了。
原理很简单
你在哪个目录下运行的java
java默认哪个目录就是包的根路径
java认为一个目录就是一个package
这样你在c:\下运行java test.aa
java就在c:\下找test文件夹
再找aa这个类

既然已经指定aa类在package test之下,那么你运行程序时就应该在test目录的上一层执行程序,即在test文件夹的上一层(这里就C盘目录下)执行
java test/aa

而不是在test目录下直接执行,否则就会出现找不到package的错误。如果有更多的package的话道理也一样,只要再往上几层目录就可以了。

你先确定你的path的设置对,然后进入相应的盘里。javac text.java
让后java text就行了,如果不行。你的软件可能有问题,建议你从新装个jdk。。

举个例子:
你创建了一个类BankCard,包名是com.bank.info.business
类文件起始目录(未编译前的目录)为E:\neusoft\app
首先在DOS里进入E:\neusoft\app这个目录下
编译时用命令:javac -d e:\neusoft\app BankCard.java,编译成功后才会出现com,bank,info,business这些文件夹,包名中的文件夹不能手动创建.
调试时用命令:java co