日期:2014-05-20  浏览次数:20711 次

包内的class无法访问默认包的class,在线等待~~~~~
各位高手大家好,最近我遇到一个问题
我在c:\test下面写了两个类,第一个是A.java内容,A.java文件位于c:\test\com\a文件夹中,内容如下

package   com.a;
public   class   A{

    B   b=new   B();

}
第二个是B.java,该文件位于c:\test下,内容如下:

public   class   B{     }


然后我在classpath中设置了.;c:\test

然后在命令行下面切换到了c:\test下面,先编译B.java,然后切换到c:\test\com\a目录下面编译A.java,我感觉我在classpath中设置了路径以后应该能找到B.class这个类,但是编译却出现了错误,不知道哪位高手能给我解释一下,谢谢大家,我在线等~~~~~~~~~~~~~~~~~~

------解决方案--------------------
从JDK1.4之后,不再支持import default package
To fix such problems in your code, move all of the classes from the unnamed namespace into a named namespace.
------解决方案--------------------
这根classpath无关,是jdk版本的问题,1.5就不支持默认包~
------解决方案--------------------
应该不行的吧.我也试过了.
------解决方案--------------------
我感觉不是classpath的问题,我把源代码改了一下
package com.a;
import pcg.*; //把B.class引入进来
public class A{

B b=new B();

}
package pcg; //加包,否则没办法在A.java中引入。
public class B{ }
这样就能够编译成功了
javac -d classes src\*.java
我用的是jdk6
------解决方案--------------------
就是这样,类一般不要放在默认包里。不过也可以把不需要别的类调用的顶层类放在默认包里,强制别的类不能调用它们