关于包的问题

图片描述
我这里指定了lee包,生成了一个lee文件夹,在lee文件夹下生成了class文件,现在问题有三个:
1.请问为什么我不能进入lee文件夹下,使用java Hello的方式运行?
2.是否一定需要在Hello.java的同级目录下,使用java lee.Hello的方式?能否在lee文件夹下,采用java lee.Hello的方式运行?
3.编译的时候,如果将class文件存到别的文件夹,我运行的时候,是否一定需要在源文件的目录下,指定class文件的路径再运行?

阅读 1.8k
1 个回答

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文件外层文件层级结构和包的命名规则相同,就可以执行。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题