In a Java项目,是否保留所有.java同一文件夹中的文件意味着它们位于同一包中?
有什么区别与将所有项目文件保存在一个文件夹中相比,为我们的项目制作一个包?
这个线程 https://stackoverflow.com/questions/9510932/java-package-vs-folder-structure-what-is-the-difference并没有真正解决我的问题。
包和目录之间存在一种关系,但它是you必须维持。如果您有一个位于“mypackage1.mypackage2”中的类,则意味着java
命令期望在名为“mypackage1\mypackage2”的目录结构中找到它(假设“向后”Windows 表示法),该目录结构进一步嵌入到一个目录中(我们称之为“myjava”),其名称位于classpath
(或者直接在“当前目录”中)。
所以你的Java类(内部说package mypackage1.mypackage2;
)位于“\Users\myName\myjava\mypackage1\mypackage2\”中,并且将“\Users\myName\myjava”放在类路径中,否则将当前目录设置为“\Users\myName” \myjava"。
如果你把它搞混了,要么根本找不到这个类,要么你会得到一个错误,比如永远模糊的“NoClassDefFoundError”。
As to why人们会使用包(和目录),原因与“名称空间”和“关注点分离”有关(查找这些内容)。如果没有包并且所有“java.lang”、“java.io”、“sun.misc”等类都在一起,Java 将很难保持正常。首先,必须使用名称“前缀”来保持整齐并避免名称冲突。而且大部分逻辑分组都会丢失。
对于您自己的项目,您不需要为自己编写的简单小程序使用包,但如果您编写的内容可能会交给其他人,那么使用诸如“myname.myproject”之类的包(替换您的名字和当然是项目),因此您将其提供给的人可以将其与其他人结合使用,而不会发生名称冲突。
在大型应用程序中,您会发现使用进一步的分离级别可以帮助您保持功能的直线性,以便您知道所有内容的位置。它还会阻止您“跨越不同功能区域之间的边界”,因此您不会将不相关的逻辑纠缠在一起。
Eclipse(如果您使用它)有点混淆了问题,因为它“想要”提供目录和包名称,并且有时(但并非总是)使它们保持同步。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)