duckyaya 2004-03-14 05:48:46
package PackageDemo;

import SubPackage.*;

public class ClassA
{
public ClassA(){}
public void doSomething()
{
System.out.println("I am in PackageDemo,ClassA~!");
}
public static void main(String args[])
{
ClassA classA=new ClassA();
classA.doSomething();
ClassB classB=new ClassB();
classB.doSomething();
}
}

package SubPackage;

public class ClassB
{
public ClassB(){}
public void doSomething()
{
System.out.println("I am in PackageDemo->SubPackage,classB~!");
}
}


编译了ClassA没问题,但是运行:

D:\>java PackageDemo.ClassA
I am in PackageDemo,ClassA~!
Exception in thread "main" java.lang.NoClassDefFoundError: SubPackage/ClassB
at PackageDemo.ClassA.main(ClassA.java:16)

怎么回事啊?

...全文
35 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
duckyaya 2004-03-15
  • 打赏
  • 举报
回复
我只是将Package包放classpath中了,可以运行,但是
真的没有不用变classpath的方法么?
javaCandelaboy 2004-03-14
  • 打赏
  • 举报
回复
必须将你的两个包都放在classpath里。
如:
D:/java/PackageDemo/ClassA.java
D:/java/SubPackage/ClassB.java

这样你要加上classpath:D:/java;
Sheepy 2004-03-14
  • 打赏
  • 举报
回复
“我想知道别的方法,不用设置classpath的那种”
没有这种方法。用IDE可以不手动设置,但本质还是设置classpath,只不过IDE帮你自动设置好了。
sdjiang2004 2004-03-14
  • 打赏
  • 举报
回复
我也遇到过这样的问题,只要把ClassA中的import语句改成import SubPackage.ClassB 就可以了,但是为什么不能用.* 我也不知道
softgq 2004-03-14
  • 打赏
  • 举报
回复
问:你ClassB放在一个单独的文件夹中了吗? 有可能有路径问题呀

我去吃饭 一会儿回来 等你回,然后再帮你想啊
duckyaya 2004-03-14
  • 打赏
  • 举报
回复
我想知道别的方法,不用设置classpath的那种
edisonWei 2004-03-14
  • 打赏
  • 举报
回复
把两个包都放在classpath下面

62,612

社区成员

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

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