在使用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。
运行命令javac Citing.java可以成功,因为当前工作路径已经是D:/src,编译程序首先搜索当前路径结合import语句就可以找到D:/src /classes/shang下的Cited.class文件。当然也能运行成功,但这样失去packagey语句的作用,未能完全将源文件和类文件分 开。存储类文件的classes文件夹在存储源文件的src文件夹下。
我一直解决不了的就是第1个错误。
现在明白了,希望有相同问题的人也能了解!
另附正确运行的图片: