Circle2.java:
package p1;
public class Circle2{
double radius;
Circle2(){
radius = 1.0;
}
}
然后再另一个文件TestCircle2.java中调用
package p1;
public class TestCircle2{
public static void main(String[] args){
Circle2 circle1=new Circle2();
System.out.println("The area of the circle of radius"+circle1.radius+" is "+circle1.getArea());
}
->javac Circle2.java
->javac TestCircle2.java 时显示找不到符号Circle2,这是什么原因了?
------解决方案--------------------
假设你的目录结构是
src
-- p1
-- Circle2.java
-- TestCircle2.java
cmd到src下
D:\Test\src>javac -d .\ p1\Circle2.java
D:\Test\src>javac -d .\ p1\TestCircle2.java
D:\Test\src>java p1.TestCircle2
The area of the circle of radius1.0 is 1.0
------解决方案--------------------
请楼主在-d后面留个空格+圆点+空格+*.java
------解决方案--------------------
能運行了,是嗎》
p1是兩個.java文件生成的字節碼的包名,相當于C++里的命名空間,包名+類名才是一個類的完整名字!
要想在其它包中使用Circle2和TestCircle2類就必須加包名,一般是使用import p1.XXX;之類的。
當然,在p1包內部就無須導入p1包了!
運行時p1.TestCircle2就是字節碼的全名,所有必須要帶p1;
Circle2.class 和TestCircle2.class都在D:\p1里面,因為javac -d . 指定了包的生成路徑:在當前目錄下,當前目錄就是d:\。-d參數后就是指明包的生成路徑的,你可以指定到c盤即javac -d C:\ XXX.java
如果要想.class文件與.java文件在同一個目錄里,那麼這個目錄路徑就必須為包名,比如將java設置為包名而非p1: package java;
明白否??