1.设计的文件层级
我们将“Package”文件夹称为根目录,“Level01”称为一级目录,“Level02”称为二级目录,以此类推。
2.发现在不同目录下的包名有如下特征:
- 根目录下的文件不需要包名,可以理解成包名为 “”
- 一级目录下包名为 “Level01”
- 二级目录下包名为 “Level01.Level02”
- 三级目录下包名为 “Level01.Level02.Level03”
- 四级目录下包名为 “Level01.Level02.Level03.Level04”
如图:
……
3.包对于使用命令行编译运行Java的影响
根目录下:命令行所处位置:Package , 命令行“java test.java”,
⚠️:必须带上后缀".java"
⚠️:对于单个Java源文件可以直接运行而无需编译
⚠️:主类必须是文件的第一个类
一级目录下:命令行所处位置:Level01,命令行“java test01.java”
⚠️:与上同
一级目录下 :命令行所处位置:Package,命令行“java Level01/test01.java”
⚠️:与上同
一级目录下:命令行所在位置:Package,命令行”javac Level01/test01.java“
+“ java Level01.test01”
⚠️:第二条语句不能带后缀“.java”
⚠️:主类可以不是第一个类
⚠️:需要对源文件进行编译
二级目录下:命令行所在位置:Level02,命令行“java test02.java”
⚠️:必须带上后缀".java"
⚠️:对于单个Java源文件可以直接运行而无需编译
⚠️:主类必须是文件的第一个类
二级目录下:命令行所在位置:Level01,命令行“ java Level02/test02.java”
⚠️:同上
二级目录下:命令行所在位置:Level01,命令行“javac Level02/test02.java”+“java Level02.test02”
⚠️:该命令组合无法成功运行
二级目录下:命令行所在位置:Package,命令行“javac Level01/Level02/test02.java”+“javac Level01.Level02.test02.java”
⚠️:第二条语句不能带后缀“.java”
⚠️:主类可以不是第一个类
⚠️:需要对源文件进行编译
……
综上,我们可以发现,有两种方式可以运行Java文件:
"java 相对当前命令行位置的文件路径",比如命令行在“Level01”,那"test02.java“的相对路径就是“Level02/test02.java”
这种方式的缺陷很明显,就是只能针对单个Java源文件,而且主类必须是源文件的第一个类
"javac 相对根目录的文件路径"+“java 文件包名”,比如根目录是“Package,那么相对路径就是“Level01/Level02/test02.java”,其中包名就是将相对路径的的“/”换成".",同时去掉文件后缀名“.java”
这种方式意味着命令行的位置需在“文件相对路径的第一个文件夹的上一个目录”处