1

我了解 java 源代码树和 jar 文件的基本结构:

com
  example
    mypackage
      myclass1.java
      myclass2.java

但是,如果我有位图或 html 文件,是否有约定放置它们的位置?

过去,我ui在源代码树根目录中添加了一个目录(例如,com上面目录中的同级目录)。但这感觉“偷偷摸摸”:从技术上讲,可能有一个“ui”包。

4

3 回答 3

3

我更喜欢 Maven 方法,它有一个与 Java 源文件分开的资源目录:

my-app
|-- pom.xml
`-- src
    |-- main
    | `--- resources <-- Resources go here (sibling directory of java)
    |   `-- java
    |       `-- com
    |           `-- mycompany
    |               `-- app
    |                   `-- App.java
    `-- test
        `-- java
            `-- com
                `-- mycompany
                    `-- app
                        `-- AppTest.java

如果您想要更“企业化”的方法,请使用很久以前由 Sun 开发的“企业应用程序项目约定” 。AFAIK,只有 Netbeans IDE 在某种程度上(或全部)实现了这一点。

在运行时,所有资源都应该在META-INF目录中。可能有子目录,但我认为这方面有足够的协议,不像源代码组织。

于 2011-06-07T14:27:54.620 回答
0

我不知道任何约定。我个人把我所有的东西都放在一个 data/ 目录中。

即使有一个像这样调用的包,存在与类文件冲突的文件的可能性也很小。

于 2011-06-07T14:21:17.633 回答
0

如果您使用 maven,它会鼓励/强制您使用广泛采用的项目结构(单个 WAR 模块):

.
├── pom.xml
└── src
    └── main
    ├── java
    │   └── com
    │       └── example
    │           └── Test.java
    ├── resources
    │   └── com
    │       └── example
    │           └── data.csv
    └── webapp
        ├── public.png
        └── WEB-INF
            ├── hidden.jsp
            └── web.xml

一些提示:放置data.csv在与包相同的目录中Test.java可以让您轻松地在其中打开此文件Test.java(并保持一切井井有条,因为数据文件位于多个目录中):

getClass().getResource("data.csv");  //will only work in com.example package

Maven 会/src/main/resources自动将内容放到你的 CLASSPATH 中。/webapp子目录仅用于 WAR 文件。

于 2011-06-07T14:29:08.277 回答