84669 person learning
152542 person learning
20005 person learning
5487 person learning
7821 person learning
359900 person learning
3350 person learning
180660 person learning
48569 person learning
18603 person learning
40936 person learning
1549 person learning
1183 person learning
32909 person learning
我这里指定了lee包,生成了一个lee文件夹,在lee文件夹下生成了class文件,现在问题有三个:1.请问为什么我不能进入lee文件夹下,使用java Hello的方式运行?2.是否一定需要在Hello.java的同级目录下,使用java lee.Hello的方式?能否在lee文件夹下,采用java lee.Hello的方式运行?3.编译的时候,如果将class文件存到别的文件夹,我运行的时候,是否一定需要在源文件的目录下,指定class文件的路径再运行?
人生最曼妙的风景,竟是内心的淡定与从容!
Hello只是这个java文件的简单名称,带上包名lee.Hello叫做这个文件的全限定名。
Hello
lee.Hello
比如,我在test包下面也有一个叫做Hello的java文件,在没有包名的情况下是无法区分,而且JDK也是通过这种方式来确定唯一的java文件。
test
java命名规则在文件系统中是使用层级目录来表示包结构,比如a.b.c.foo在文件系统中是a/b/c/foo这样的文件夹来存储。
a.b.c.foo
a/b/c/foo
现在来回答上面的问题1.因为全限定名的规则,Hello在JDK中的名称就是lee.Hello。2.应该是要在lee文件夹的上一级目录中执行java lee.Hello,原因和1相同。3.只要class文件外层文件层级结构和包的命名规则相同,就可以执行。
java lee.Hello
class
Hello
只是这个java文件的简单名称,带上包名lee.Hello
叫做这个文件的全限定名。比如,我在
test
包下面也有一个叫做Hello
的java文件,在没有包名的情况下是无法区分,而且JDK也是通过这种方式来确定唯一的java文件。java命名规则在文件系统中是使用层级目录来表示包结构,比如
a.b.c.foo
在文件系统中是a/b/c/foo
这样的文件夹来存储。现在来回答上面的问题
1.因为全限定名的规则,
Hello
在JDK中的名称就是lee.Hello
。2.应该是要在lee文件夹的上一级目录中执行
java lee.Hello
,原因和1相同。3.只要
class
文件外层文件层级结构和包的命名规则相同,就可以执行。