A.java 放在 D:\Java\Example\A 文件夹中。内容如下:
package A;public class A {
public static int a=1;
public static void f(){
System.out.println(a);
}
}编译后的A.class 放在D:\Java\Example\A中。然后D:\Java\Example\A中有个B.java,内容如下:import A.A;
//import A.*; ??///如果这样写就会错误,为什么?class B{
public static void main(String[] args){
A.f();
}
} 编译后的B.class放在D:\Java\Example\A中。没有设置任何classPath变量。请问import中的 A.A是相对那个路径来说的?为什么?
请问import A.* 为什么这样写就会错误?
package A;public class A {
public static int a=1;
public static void f(){
System.out.println(a);
}
}编译后的A.class 放在D:\Java\Example\A中。然后D:\Java\Example\A中有个B.java,内容如下:import A.A;
//import A.*; ??///如果这样写就会错误,为什么?class B{
public static void main(String[] args){
A.f();
}
} 编译后的B.class放在D:\Java\Example\A中。没有设置任何classPath变量。请问import中的 A.A是相对那个路径来说的?为什么?
请问import A.* 为什么这样写就会错误?
解决方案 »
- 编译总提示未覆盖抽象方法KeyReleased
- SAX解析XML,与内存无关吗?
- 急问:在swing中画图的时候,怎么让画的图像显示在swing中的组件之上?
- 字符 字节流 有必要都掌握么 ,没有英文基础学JAVA感觉真的好痛苦
- 关于非阻塞算法中的链表问题
- 菜鸟问体:我的Applet无法正常显示的愿意
- 测试工具(fitnesse)
- mdi窗口
- 求java json的简单示范
- ************请问socket与socket4、socket5有什么关系?***********
- 有在用英文版的WinXP吗?邦个小忙,有分!
- 大家说说JSP/struts/hibernate在现实中主要做什么类型的项目?
package什么,就放在什么文件夹下,你的B根本没有package干吗还要放到跟A同一个目录下
你要package A,就是说A文件夹是你工程目录的第二级目录,不能乱弄的
包名建议小写,全部小写你的 B没有package就默认在工程根目录下,不然他们在同一个目录下你package干吗
然而,类B,你没有设置包,当你引用import A.*;的时候,编译器会自动从当前目录寻找具有名字为A.的目录,然后,再从其中进行引用。可是此时,你的B 已经放在了A/下面,所以上面的引用,当然会提示A不存在。此时,只要将B.java移动到Example/目录中,与A/目录在同一级。那样重新编译即可。这种方式,才应该是正确的编译方式。
至于你使用import A.A;为什么正确,我想原因也是一样。当编译器在当前目录下面不能发现A/目录时,它却发现了一个类的字节码文件,且标识这个类的名字为A.A。因此,编译器当即引用这个类。所以会正确编译。
希望上面的对你有帮助。
即使你不把A.class放到A/目录下面,javac对其进行编译的时候,也会自动创建A文件夹,然后将A.class放进去。但是我编译时候不会自动创建A文件夹。除非我用javac -d 这个命令编译。