【问题标题】:Why does dynamic web project create meta-inf under webapp folder?为什么动态 web 项目在 webapp 文件夹下创建 meta-inf?
【发布时间】:2014-07-29 00:07:46
【问题描述】:

我读到 Meta-inf 应该放在 src/main/resources 下。当我在 Eclipse 中创建一个动态 Web 项目时,我似乎将 Meta-Inf 与 Web-Inf 放在了 webapp 文件夹下。

Meta-Inf 的正确位置在哪里?它必须在类路径上吗?我需要配置一个 persistence.xml 文件,不知道这是否有什么不同。

【问题讨论】:

    标签: java eclipse jpa web meta-inf


    【解决方案1】:

    “我读到 Meta-inf 应该放在 src/main/resources 下”

    不一定。但你是对的,它应该在类路径上。使用 src/main/resources,其中的所有内容(使用 maven)都放在类路径中没有资源/。请记住,Dynamic Web Project 类型不是 Maven 类型的项目(尽管可以根据需要轻松制作)。

    “当我在 Eclipse 中创建一个动态 Web 项目时,我似乎将 Meta-Inf 放在 webapp 文件夹下,与 Web-Inf 并排放置。”

    是的,这是用于 Manifest 的,就像任何其他 jar 一样。不是类路径的 META-INF

    "我需要配置一个persistence.xml文件"

    您可以手动创建 META_INF 并将其放在 src 中(除非您将其转换为 maven 项目,否则没有主/资源)。但是,将 JPA 配置到您的动态 Web 项目中的最简单方法是:

    1. 右键单击您的项目并转到属性。
    2. Find Project facets 点击它,然后选择 JPA
    3. 底部可能有更多配置的链接。点击它
    4. 根据 JPA 实现,您应该在此对话框中相应地配置实现。
    5. 完成后,您应该会在 src 中看到 META-INF,其中包含为您创建的 persistence.xml。

    the javaee tutorial on persistence。它指出:

    如果将持久性单元打包为 WAR 文件中的一组类,persistence.xml 应位于 WAR 文件的 WEB-INF/classes/META-INF 目录中。

    如果您打开导航器视图(Windows -> 显示视图 -> 导航器),您将看到带有 classes/META-INF/persistence.xml 的构建目录

    【讨论】:

    • 谢谢,所以我已经转换为一个 maven 项目。我可以简单地移动 src/main/resources 下的 meta-inf,这将在构建过程中放置​​在 web-inf/classes/meta-inf 的目标中吗?我认为这不会干扰可以随它移动的清单吗?我假设我不能有 2 个 meta-inf 文件夹,一个用于清单,一个用于其他所有文件夹。
    • 如果您愿意,可以保留原始 META-INF。 Maven 无论如何都会重新创建它(如果你删除它)。这是需要的。但是,是的,您可以在 src/main/resources 中的 src/main/java 中创建一个新的 META-INF。他们最终都在同一个地方。虽然在资源中看到它更常见
    猜你喜欢
    • 1970-01-01
    • 2021-08-10
    • 2013-06-20
    • 2011-09-16
    • 1970-01-01
    • 1970-01-01
    • 2014-11-12
    • 2015-10-23
    • 1970-01-01
    相关资源
    最近更新 更多