代码之家  ›  专栏  ›  技术社区  ›  Buggieboy

Eclipse Java项目文件夹组织

  •  27
  • Buggieboy  · 技术社区  · 16 年前

    我是从C#/VisualStudio背景来学习Java和Eclipse的。在后者中,我通常会组织这样的解决方案:

    在MyApp将包含用于生成.exe的项目的地方,MyAppsUtilities将生成一个由.exe调用的程序集DLL,而LowerLevel Stuff可能会生成一个包含高级实用程序DLL使用的类的程序集。

    在Eclipse(Ganymede,但可能会被说服切换到Galileo)中,我有:

    \MyProjects\workspace\MyApp

    当我创建我的初始项目时。有一个选项可以将源文件和生成文件放在同一文件夹中,但我在反映包层次结构的路径上创建了.java文件:

    我的问题是:当我为.jar文件创建子项目(这是正确的Java/Eclipse术语吗?)时,它将类似于.NET中的上述MyAppsUtilities和LowerLevel程序集DLL,我是否可以(应该)等效地组织文件夹?例如。:

    \MyProjects\workspace\MyApp\src\com\mycompany\MyApp\myapputilities\MyAppsUtilities.java

    组织这些东西的标准/正确方式是什么,在IDE中是如何具体完成的?

    4 回复  |  直到 16 年前
        1
  •  60
  •   Adriaan Koster    8 年前

    com.mycompany.myapp “(此应用程序的网站可能是” http://myapp.mycompany.com "虽然情况显然并非总是如此)。

    • :主要类别;MyApp(带有主方法)
    • com.mycompany.myapp.model
    • com.mycompany.myapp.ui
    • com.mycompany.myapp.service :应用程序中的服务,即“业务逻辑”
    • com.mycompany.myapp.util :在多个地方使用的帮助器类

    这表明它是一个独立的Java应用程序,如果它是一个使用众多框架之一的Web应用程序,则可能会有所不同。

    项目中的文件示例:

    src/test/java/com/acme/foo/BarTest.java
    src/main/java/com/acme/foo/Bar.java
    lib/utilities_1_0.jar
    

    com/acme/foo/BarUtils.class
    

    class这是一个已编译的java类,因此采用独立于平台的字节码形式,可以在任何JVM上运行。通常jar文件只包含编译过的类,尽管有时您可以下载一个jar版本,其中也包含源(.java)文件。如果您希望能够读取正在使用的jar文件的原始源代码,那么这非常有用。

    在上面的示例中,BarTest和BarUtils都位于同一个包com.acme.foo中,但实际位于硬盘上的不同位置。

    直接驻留在源目录中的类位于“默认包”中,将类保留在其中通常不是一个好主意,因为不清楚该类属于哪个公司和应用程序,如果添加到类路径的任何jar文件在默认包中包含具有相同名称的类,则可能会出现名称冲突。

    现在,如果您部署这个应用程序,它通常会被编译成.class文件并捆绑在.jar中(这基本上是.zip文件加上一些清单信息的别致名称)。 运行应用程序不需要创建.jar,但在部署/分发应用程序时非常方便。使用清单信息,您可以使.jar文件成为“可执行文件”,以便用户可以轻松地运行它,请参见[a]。

    on the way )。要在命令行上运行Java应用程序(即不是从Eclipse),必须指定类路径上的每个.jar文件位置。当您使用Java的许多框架之一(Maven、Spring、OSGi、Gradle)时,通常会有某种形式的支持来减轻这种痛苦。如果您正在构建一个web应用程序,您通常只需遵守其分层/部署约定,就可以轻松地将其部署到您选择的web容器(Tomcat、Jetty、Glassfish)中。

    我希望这能让您对Java中的工作方式有一个大致的了解!

    [a] 要创建MyApp应用程序的可执行jar,您需要在路径上使用JDK。然后在compile(bin或target)目录中使用以下命令行:

    jar cvfe myapp.jar com.mycompany.myapp.MyApp com\mycompany\myapp
    

    然后,您可以使用以下命令行执行它:

    java -jar myapp.jar
    

    或者双击jar文件。注意,在这种情况下,您将看不到Java控制台,因此这仅对具有自己的GUI(如Swing应用程序)或可能在后台运行(如socket服务器)的应用程序有用。

        2
  •  10
  •   serg10    16 年前

    马文有一个深思熟虑的计划 standard directory layout . 即使您没有直接使用它,您也可以将其视为一个事实标准。Maven“多模块”项目相当类似于您描述的.net多程序集布局。

        3
  •  2
  •   matt b    16 年前

        4
  •  2
  •   Thorbjørn Ravn Andersen    16 年前

    在回答这个问题之前,您需要澄清两件事:

    1. 您将使用哪个构建系统在Eclipse之外自动构建工件?

    答案将极大地影响你的选择。

    注意,每个项目可能包含多个源文件夹,将测试代码、配置和Java源代码等分开。这并不像简化你的结构那么重要。

    推荐文章