#包引用的问题!

Gooing 2004-09-16 05:40:32
我在一个包中写了两个类
其中一个用到了另一个
//A.java
package pack;

public class A {
public String getId (){
return "a d ID" ;
}
};

//B.java
package pack;

public class B {
public void test(){
A a = new A();

}
}
结果在编译B.java的时候出了问题:
找不到A
请问:该如何做?
要修改 classpath 吗?
...全文
117 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
Gooing 2004-09-17
  • 打赏
  • 举报
回复
嘿嘿
谢啦
zcjl 2004-09-17
  • 打赏
  • 举报
回复
如果只想知其然,以后命令行编译时就用javac -d . *.java
或者是用ant做make工具
当然,用IDE也是很不错的选择

要想搞清楚这个问题,就得多找些java虚拟机和classloader的资料看看
然后把心得拿来给大家分享,^_^
zcjl 2004-09-17
  • 打赏
  • 举报
回复
因为在你用javac B.java编译时
classpaht中的那个“.”指向的是E:\pack
编译器会以这个目录为基础,寻找pack/A.class的存在
Gooing 2004-09-17
  • 打赏
  • 举报
回复
通常classpath中都会设置".",这个小点代表了当前路径
----------------------------
我已经设置了“.”这个CLASSPATH
并且文件结构是这样的:
E:\
|
-pack
|
--A.java
--B.java
按理说,B.JAVA 应该是可以找到A.CLASS 的
可是,你为什么要在里面加一个pack包呢?
--pack
|
--A.class
(这是按你的方法做的,然后就出了这么一部分)
zcjl 2004-09-17
  • 打赏
  • 举报
回复
javac -d . A.java
加上-d有何目的?
----------------------------------
直接运行javac,会有提示信息,告诉你各个编译参数的意义
zcjl 2004-09-17
  • 打赏
  • 举报
回复
classpath的问题
在编译B的时候,需要遍历classpath,查找pack/A.class的存在
通常classpath中都会设置".",这个小点代表了当前路径
所以用javac -d . A.java编译,自动生成包路径,或是手工把A.class放到对应的包路径中,就可以使编译B.java的时候能正确找到A
bobxp 2004-09-17
  • 打赏
  • 举报
回复
javac -d . A.java
加上-d有何目的?

又为何要新建pack文件夹?把A.class放到里面?


Gooing 2004-09-17
  • 打赏
  • 举报
回复
可以le
楼上的,你这样做的原因是什么?
zcjl 2004-09-17
  • 打赏
  • 举报
回复
解决办法:
1.把A.java和B.java放在同一目录下,用javac *.java编译
2.javac -d . A.java
javac B.java
3.javac A.java,然后新建文件夹pack,把A.class放到里面
再javac B.java
tiger_shi 2004-09-17
  • 打赏
  • 举报
回复
A的构造函数呢?
Gooing 2004-09-17
  • 打赏
  • 举报
回复
还是不行
9306zl9306 2004-09-16
  • 打赏
  • 举报
回复
//A.java
package pack;
public class A {
public String getId (){
return "a d ID" ;
}
};

//B.java
package pack;

//加一个引入试试看
import pack;

public class B {
public void test(){
A a = new A();

}
}
Gooing 2004-09-16
  • 打赏
  • 举报
回复
MartinWang 2004-09-16
  • 打赏
  • 举报
回复
classpath里是否有"."也就是当前目录?
Gooing 2004-09-16
  • 打赏
  • 举报
回复
当然在一个目录下了
你试的没问题?
射天狼 2004-09-16
  • 打赏
  • 举报
回复
我试了一下,没问题啊,你两个文件是在一个目录下吗??!

62,614

社区成员

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

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