我这里指定了lee包,生成了一个lee文件夹,在lee文件夹下生成了class文件,现在问题有三个:
1.请问为什么我不能进入lee文件夹下,使用java Hello的方式运行?
2.是否一定需要在Hello.java的同级目录下,使用java lee.Hello的方式?能否在lee文件夹下,采用java lee.Hello的方式运行?
3.编译的时候,如果将class文件存到别的文件夹,我运行的时候,是否一定需要在源文件的目录下,指定class文件的路径再运行?
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
3 回答1.7k 阅读✓ 已解决
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
文件外层文件层级结构和包的命名规则相同,就可以执行。