JAVA打包的时候编译失败_Java 关于package编译的问题

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

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\

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值