Java中import语句的学习

     
现在,学习 import 语句。
假设有两个存放在 D:/src 下的源文件 Cited.java Citing.java
Cited.java 文件内的程序:
 
package classes.shang;
public class Cited
{
   public void print()
      {
       System.out.println("Hello World! 我是被调用子类的程序输出呀! ");
      }
}
Citing.java 文件内的程序:
import classes.shang.Cited;
public class Citing
{
   public static void main(String[] args)
     {
      Cited demo=new Cited();
      System.out.printf("/n 这是一个 pakage 语句和 import 语句的演示程序:我将调用 Cited 类,它会输出: /n / n");
      demo.print();
     }
}
如图所示运行:
 
可能出现的其他几种情况:
   运行命令: javac Cited.java 。这种情况下生成 Cited.class 文件存放在当前文件夹下即 D:/src 下,这里如有不明白可以参考 package 语句学习。当编译 Citing.java 时会提示以下错误:
 
D:/src>javac Citing.java
Citing.java:1: 软件包 classes.shang 不存在
import classes.shang.Cited;
                    ^
Citing.java:6: 无法访问 Cited
错误的类文件: ./Cited.class
类文件包含错误的类: classes.shang.Cited
请删除该文件或确保该文件位于正确的类路径子目录中。
      Cited demo=new Cited();
      ^
2 错误。
    这是因为 Citing.java 文件指明在 classes/shang 路径引用 Cited.class, 在结合类路径下仍然无法找到所要的类文件。
 
 
运行命令: javac -d . Cited.java 。这种情况下当前文件夹下生成 classes 文件夹, classes 文件夹下生成 shang 文件夹。 Cited.class 文件存放 shang 文件夹下, Cited.class 文件的路径即 D:/src/classes/shang 。运行命令 javac Citing.java 可以成功,因为当前工作路径已经是 D:/src ,编译程序首先搜索当前路径结合 import 语句就可以找到 D:/src/classes/shang 下的 Cited.class 文件。当然也能运行成功,但这样失去 packagey 语句的作用,未能完全将源文件和类文件分开。存储类文件的 classes 文件夹在存储源文件的 src 文件夹下。
注意到 Citing.java 中的 import 语句指明引用 Cited 类,若改为通配符 * ;运行命令: javac -d E:/ Cited.java, 编译成功,可是当运行命令: javac Citing.java ,就会出现如下提示错误:
 
 
Citing.java:6: 无法访问 Cited
错误的类文件: ./Cited.java
文件不包含类 Cited
请删除该文件或确保该文件位于正确的类路径子目录中。
      Cited demo=new Cited();
      ^
1 错误
 
我们已经设置 classpath ,怎么还会出现上面如:无法访问、文件不包含类的错误呢?编译程序首先搜索当前路径下的文件,搜索 Cited.java 造成错误,可以在编译 Cited.java 成功后,删除 Cited.java ,再运行命令: javac Citing.java 。整个过程如图:
 
如果运行的命令是 javac Cited.java ,成功后,运行命令 javac Citing.java, 结果出现如下提示错误:
Citing.java:1: 软件包 classes.shang 不存在
import classes.shang.*;
^                                                
Citing.java:6: 无法访问 Cited
错误的类文件: ./Cited.class
类文件包含错误的类: classes.shang.Cited
请删除该文件或确保该文件位于正确的类路径子目录中。
      Cited demo=new Cited();
      ^
2 错误
 
希望上面的内容,能对大家有帮助。
本人是一初学者,以上想法难免有不当,不准确和错误之处,希望大家多多包涵,欢迎批评指正。
也欢迎交流讨论,
我的 qq:348737102
e-mail:Shang_023@126.com
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值