Eclipse Java项目文件夹组织
我是从C#/ Visual Studio的背景来学习Java和Eclipse的。在后者中,我通常会组织这样的解决方案:
MyApp将包含一个用于构建.exe的项目,MyAppsUtilities将创建一个由.exe调用的程序集DLL,而LowerLevelStuff可能会构建一个包含更高级别的实用程序DLL使用的类的程序集。
在Eclipse(Ganymede,但可以说服改用Galileo)中,我有:
当我创建我的初始项目时。有一个选项可以将源文件和构建文件放在同一文件夹中,但是我在反映我的包层次结构的路径上创建了.java文件:
我的问题是这样的:当我为.jar文件创建子项目(是否正确的Java /
Eclipse术语?)时,它类似于.NET中的上述MyAppsUtilities和LowerLevelStuff程序集DLL,可以(应该)等效地组织这些文件夹吗?例如:
组织这些内容的标准/正确方法是什么?如何在IDE中特定地完成它?
回答:
将Java源代码包视为一种大的分层命名空间。商业应用程序通常位于“ ”(此应用程序的网站可能为“
”)下,尽管显然并非总是如此。
在myapp包下组织内容的方式在很大程度上取决于您。您在可执行文件(.exe),DLL和低级类之间对C#所做的区分在Java中不存在相同形式。所有Java源代码都被编译成.class文件(其内容称为“字节码”),可以在许多平台上由Java虚拟机(JVM)执行。因此,高级/低级类没有内在的区别,除非您通过包装将其归类。常见的包装方式是:
- :主类;MyApp(使用主要方法)
- :域模型类;客户,订单等
- :用户界面(演示或视图)代码
- :应用程序内的服务,即“业务逻辑”
- :在多个地方使用的帮助程序类
这表明是一个独立的Java应用程序,如果它是使用许多框架之一的Web应用程序,则可能会有所不同。
这些软件包与项目中的目录层次结构相对应。使用Eclipse时,这种层次结构的根称为“源目录”。一个项目可以定义多个源目录,通常是“主”目录和“测试”源目录。
项目中文件的示例:
src/test/java/com/acme/foo/BarTest.javasrc/main/java/com/acme/foo/Bar.java
lib/utilities_1_0.jar
在实用程序_1_0.jar中:
com/acme/foo/BarUtils.class
BarUtils.class这是一个编译的Java类,因此可以以平台无关的字节码形式在任何JVM上运行。尽管有时您可以下载也包含源(.java)文件的jar版本,但jarfile通常仅包含编译的类。如果您希望能够读取正在使用的jar文件的原始源代码,这将很有用。
在Bar上面的示例中,BarTest和BarUtils都位于com.acme.foo包中,但实际上位于硬盘上的不同位置。
直接位于源目录中的类位于“默认包”中,通常不建议将类保存在该目录中,因为不清楚该类属于哪个公司和应用程序,如果有任何jar文件,则可能会发生名称冲突您添加到类路径中的默认包中包含一个具有相同名称的类。
现在,如果您部署此应用程序,则通常会将其编译为.class文件并捆绑在.jar中(基本上是.zip文件的奇特名称加上一些清单信息)。制作.jar对运行应用程序不是必需的,但是在部署/分发应用程序时很方便。使用清单信息,您可以将一个.jar文件设为“可执行”,以便用户可以轻松地运行它,请参见[a]。
通常,您还将使用几个库,即您从Internet获得的现有.jar文件。非常常见的示例是用于访问数据库的log4j(日志记录框架)或JDBC库等。另外,您可能拥有自己的子模块,这些子模块部署在单独的jar文件中(如上面的“
utilities_1_0.jar”)。如何通过jarfile拆分事物是一个部署/分发问题,它们仍然共享Java源代码的通用命名空间。因此,实际上,如果需要,您可以解压缩所有jarfile并将内容放在一个大目录结构中(但通常不这样做)。
在运行使用/包含多个库的Java应用程序时,会遇到通常称为“类路径地狱”的情况。我们知道Java的最大缺点之一。(请注意:帮助正在路上)。要在命令行上运行Java应用程序(即不是从Eclipse),您必须在类路径上指定每个.jar文件位置。当您使用Java的许多框架之一(Maven,Spring,OSGi,Gradle)时,通常会有某种形式的支持来减轻这种痛苦。如果要构建Web应用程序,则通常只需遵守其分层/部署约定即可将其轻松部署到您选择的Web容器(Tomcat,Jetty,Glassfish)中。
我希望这能对Java的工作原理有一些一般的了解!
[a]要制作MyApp应用程序的可执行jar,您在路径上需要一个JDK。然后在编译(bin或目标)目录中使用以下命令行:
jar cvfe myapp.jar com.mycompany.myapp.MyApp com\mycompany\myapp
然后,您可以使用以下命令从命令行执行它:
java -jar myapp.jar
或通过双击jar文件。请注意,在那种情况下您不会看到Java控制台,因此这仅对具有自己的GUI(例如Swing应用程序)或可能在后台运行(例如套接字服务器)的应用程序有用。
以上是 Eclipse Java项目文件夹组织 的全部内容, 来源链接: utcz.com/qa/401952.html