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,这是什么原因了?
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,这是什么原因了?
javac p1.TestCircle2.java
这样?
src
-- p1
-- Circle2.java
-- TestCircle2.javacmd到src下
D:\Test\src>javac -d .\ p1\Circle2.javaD:\Test\src>javac -d .\ p1\TestCircle2.javaD:\Test\src>java p1.TestCircle2The area of the circle of radius1.0 is 1.0
d:Java\p1\TestCircle2.java
javac -d .\ p1\Circle2.java,这样编译的语句没见过了,而且如图,命令有误了,本人愚钝,求详细赐教啊
有子文件夹的话就用package和import
java p1.TestCircle2结果:The area of the circle of radius1.0 is 3.14LZ编译时-d后指明包要存放的路径,否则即使能生成.class文件也无法运行的!PS:正常情况下不会出现LZ遇到的问题,JAVA现在不需要设置环境变量了。莫非LZ更改了环境变量之类的东西?
确实如此,基本解决问题了,白天在上课,刚研究了下大家的建议,总结如下:
首先我是用的notepad++编的java文件
目录如下:
d:\java\Circle2.java TestCircle2.java (虽然都定义为package p1;貌似没必要新建文件夹p1将这两个放在里面)还是不太懂这
我运行命令如下:
d:\>javac -d . \java\Circle2.java
d:\>javac -d . \java\TestCircle2.java
d:\>java p1.TestCircle2 //这里必须是p1.TestCircle2是因为TestCircle2的包名是p1,必须要带包名?
运行结果正确,但发现生成的Circle2.class 和TestCircle2.class都在D:\p1里面,这是为什么?为什么生成的class文件不是和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;明白否??
d:\>javac -d d:\Java \java\Circle2.java
d:\>javac -d d:\Java \java\TestCircle2.java
d:\>cd java
d:\Java>java p1.TestCircle2
运行结果正常,也就是-d 后面,两个空格之间的就是保存路劲," . "就是当前目录,类似于配置环境变量classpath " .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;" 里面的"."的作用吧,
学到了些东西,谢谢大家了,结贴了