关于在同一个package下,一个java文件定义类,另一个java文件怎样用这个类
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
------解决方案-------------------- 引用: 引用:请楼主在-d后面留个空格+圆点+空格+*.java
确实如此,基本解决问题了,白天在上课,刚研究了下大家的建议,总结如下:
首先我是用的notepad++编的java文件
目录如下:
d:\java\Circle2.java TestCircle2.java (虽然都定义为package p1;貌似没必要新建文……
能運行了,是嗎》
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;
明白否??