在使用import语句时

来源:互联网 发布:剑侠情缘网络版3 mac 编辑:程序博客网 时间:2024/05/23 01:18
 

在使用import语句时,总出现问题,就上网找了一下,在csdn上一个叫Stillbright发的,8错,分享一下!(你也可以参考http://tb.blog.csdn.net/TrackBack.aspx?PostId=1823941

 

假设有两个存放在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();

      }

}

 

 

Stillbright 运行的步骤如下:

d:

cd src

javac -d E:/ Cited.java   (注:E:/ 这个是路径,需要加入环境变量CLASSPATH中)

javac Citing.java

java Citing

 

①运行命令: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。

运行命令javacCiting.java可以成功,因为当前工作路径已经是D:/src,编译程序首先搜索当前路径结合import语句就可以找到D:/src/classes/shang下的Cited.class文件。当然也能运行成功,但这样失去packagey语句的作用,未能完全将源文件和类文件分开。存储类文件的classes文件夹在存储源文件的src文件夹下。

 

 

我一直解决不了的就是第1个错误。

现在明白了,希望有相同问题的人也能了解!

另附正确运行的图片: