关于包的一个问题!

interhanchi 2005-06-17 10:27:23
package test;
class Test{
protected void f(){
System.out.println("f()");
}
public void f1(){
System.out.println("f1()");
}
}
public class Test2 extends Test{
public static void main(String[] args){
new Test().f();
}
}
为什么我只有执行java test.Test2才能运行 !
我的classpath是 当前目录.
而且我的Test2.java是和test在一个文件夹.
我把test.class和Test2.class已经放进test文件夹了!
它的错误是Exception in thread "main" java.lang.NoClassDefFoundError: Test2.
...全文
133 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
interhanchi 2005-06-17
  • 打赏
  • 举报
回复
还是不太懂! 谁能解释的清楚一点!
难道一定要 java java package.classname吗?
Dan1980 2005-06-17
  • 打赏
  • 举报
回复
要搞清楚包是怎么回事, 建议你彻底忘掉"当前文件夹"这个概念! 一切类和包都应放在classpath下面.

很多JAVA入门教材都用"当前文件夹"来代替classpath和包, 其实很容易把初学者糊涂.
jihanzhong 2005-06-17
  • 打赏
  • 举报
回复
hehe ^^
huangdeji 2005-06-17
  • 打赏
  • 举报
回复
他找到class没问题,编译的时候找不到test包
topil 2005-06-17
  • 打赏
  • 举报
回复
java package.classname
interhanchi 2005-06-17
  • 打赏
  • 举报
回复
但是虚拟机不是会自动从你的classpath的根目录开始查找class文件吗?
这样说得话,它不是会自己找到.
huangdeji 2005-06-17
  • 打赏
  • 举报
回复
这是规定,我也不知道为什么,好多东西是不需要知道为什么的
rower203 2005-06-17
  • 打赏
  • 举报
回复
因为你的类是放在test package中,所以java test.Test2才能运行。
java Test2 要报Exception in thread "main" java.lang.NoClassDefFoundError: Test2.
错。

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧