各位大虾:
我的源程序如下:
package pack1;class MyCircle
{
void show()
{
System.out.println("show() method is called.");
}
}class MyTest
{
public static void main(String args[])
{
MyCircle circle1=new MyCircle();
circle1.show();
}
}
把它保存在e:\Java\目录下,用javac MyCircle.java编译后,同一目录下出现MyCircle.class文件和MyTest.class文件,然后无论直接用java MyTest还是用java pack1.MyTest运行均出错.但是如果退到E:\目录下,用 javac pack1\MyCircle.java编译,再用java pack1.MyTest运行则正确,那位告诉我这是为什么啊???
我的源程序如下:
package pack1;class MyCircle
{
void show()
{
System.out.println("show() method is called.");
}
}class MyTest
{
public static void main(String args[])
{
MyCircle circle1=new MyCircle();
circle1.show();
}
}
把它保存在e:\Java\目录下,用javac MyCircle.java编译后,同一目录下出现MyCircle.class文件和MyTest.class文件,然后无论直接用java MyTest还是用java pack1.MyTest运行均出错.但是如果退到E:\目录下,用 javac pack1\MyCircle.java编译,再用java pack1.MyTest运行则正确,那位告诉我这是为什么啊???
这个时候会产生pack1目录(包)
第二次才能正确确认包
e:\java
class MyTest.java
pack1
MyCircle.java
java的包结构和物理目录结构好像有着扯不断的关系阿〉但是如果退到E:\目录下,用 javac pack1\MyCircle.java编译,再用java pack1.MyTest运行则正
〉确,那位告诉我这是为什么啊???
这句话如果我没推错的话,可能搂住把java目录改名为pack1了 。
运行正确的原因很简单,就是包结构阿,除了这个概念,还有一个,就是包结构阿,这应该是基础,最难的就是基础,多多交流。
就是直接在classpath里面添加这条路径;路径名只要到包所在路径的上一级目录;编译器会首先查找当前目录是否有所需要的包;所以当你直接在e:下运行时当然能行了
因为你的包就在e:下;
看了各位的回复,我还是不很清楚啊?当我在jcreator中编译时,系统会在.java所在路径下再创建一个pack1文件夹,并将生成的两个.class文件放在这个e:\pack1\pack1下面.
而当我在dos提示符下编译时:E:\>javac pack1\MyTest.java,生成的两个class文件与.java放在同一个目录下面,但是也必须退到上一级才能运行:E:\>java pack1.MyTest包与物理路径之间到底是什么关系啊?能否这样理解:不管.java和.class在哪里,反正总要到.class所在的上一层路径才能运行?哪位能给出一个详细的说明啊?我查了很多资料,但都讲的很简单啊.
包文件,包中的类文件,还有包含main的类文件层次结构如下:
e:\java ///java为你的工程文件名
class MyTest.java ////你的含main 类
pack1 ////包名
MyCircle.java ////包中的类名,
在ms——dos下你只要定位到java下就可以了
在e:\java目录下就javac MyTest.java
java MyTest 就可以运行了!
package pack1;
public class MyCircle {
public void show() {
// TODO: Add your code here
System.out.println("show() method is called."); }
}//MyTest.java
import pack1.*;
class MyTest {
public static void main(String [] args) {
// TODO: Add your code here
MyCircle circle1=new MyCircle();
circle1.show(); }
}我已经调试过了,没有问题,你把对应的文件放到我前一张贴子的对应文件夹下就可以运行了!
所以要javac pack1\MyCircle.java,这样才产生了pack1的包
newmeteor(圆缘) :你说的正是我问的第一个问题:直接在pack1下不行啊!!只有退到上一级目录,再加上子文件夹名称才可以!!不信你试试 !!
------------------------------------------------------------
我估计是因为在你的MyTest.java 文件中的第一行没有倒入包的缘故!少import pack1.*;
................