日期:2014-05-20  浏览次数:20622 次

关于在同一个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;

明白否??