之前被这个编译弄糊涂了,不知道大家遇到过没,总结一下:

1、两个类A、B,文件A.java, B.java

    A类需要用到B类

    即:  public  class A

            {

                    B testB = new B();

             }

2、第一种情况:

     A.java、B.java文件都保存在E:\Java中

     在A.java文件中,没有任何显示的语句表明要包含B类,如:import  B所在的文件包 

     问题:E:\Java>javac B.java 顺利编译,E:\Java>javac A.java 无法访问,

             回到上级目录,E:\>javac Java\A.java 找不到符号

     解决:将两个文件一起编译  E:\Java>javac  B.java  A.java  成功编译

              或者E:\>javac  Java\B.java  Java\A.java  成功编译

3、第二种情况:

     B类文件使用了package,这种打包可以有各种情况,以下举个例子

     1)全路径,B的打包路径为全路径

     B.java 保存在E:\Java\builder文件夹中, B.java中打包为:  package  Java.builder

     编译B.java文件:  E:\Java\builder>javac B.java   成功编译

                              E:\>javac  Java\builder\B.java  成功编译

     A.java 保存在E:\Java文件夹中, A.java中包含B为: import  Java.builder.*;

     编译A.java文件: 进入上一级目录,E:\>javac  Java\A.java  成功编译

                             如果这样:E:\Java>javac A.java  编译失败,软件包Java.builder不存在

     结论,A.java必须在B类包的最上一级路径中编译,而不是B类包的上一级路径中,这里是E:\

     2)非全路径,B的打包为非全路径

     B.java 保存在E:\Java\builder中,但是B的打包路径为: package  builder;

     编译B.java: E:\Java\builder>javac  B.java    成功编译

                        E:\>javac  Java\builder\B.java   成功编译

     A.java 保存在E:\Java中,A.java包含B为: import  builder.*;

     编译A.java:    进入上一级目录, E:\>javac  Java\A.java 编译失败,软件包builder不存在

                         E:\Java>javac A.java  成功编译

     结论,就是进入打包的最上一级目录编译,这里是E:\Java\

     3)最后,修改一下文件的保存位置

     B.java 保存在E:\Java\builder中, 打包  package  builder;

     B.java 编译同上,问题只是出现在A.java的编译

     A.java 保存在E:\Java\builder中,即与B.java同一个文件夹中

     编译:   E:\Java\builder>javac A.java  编译失败,软件包builder不存在

                E:\Java>javac builder\A.java   成功编译

                E:\>javac Java\builder\A.java  编译失败,软件包builder不存在

     结论,即A.java的保存位置,需要能够知道路径builder,可以在builder的上级目录,也可以在builder中

              编译时,需要在包的最上一级目录,这里是E:\Java\