【问题标题】:Invalid folder location on JAR export (Spring property)JAR 导出上的文件夹位置无效(Spring 属性)
【发布时间】:2013-08-03 01:19:19
【问题描述】:

我需要将 Java 项目导出为可执行文件,例如 JAR。 该项目使用 Spring XML 上下文文件来实例化一个 bean,并用以下值注入它:“src/main/resources/”,它对应于 CSV 文件的位置。

当我生成 JAR 时,“src/main/resources”文件夹不是 JAR 的一部分,因此执行失败,因为 bean 无法加载所需的 CSV 文件。

处理此问题的最佳方法是什么? 生成可执行 JAR 的最佳方法是什么?从 Eclipse 导出? Maven 组装插件?

【问题讨论】:

    标签: java spring build jar export


    【解决方案1】:

    Maven 通常会将“src/main/resources”中的内容部署到您的 webapp 的 WEB-INF 目录中。

    【讨论】:

    • 你好 fred02138。这是一个基本的 Java 项目,而不是 webapp。当 Maven 生成这个 JAR 文件时,资源文件夹中的所有文件都放在 JAR 的“根目录”中。
    【解决方案2】:

    如果这是一个 Maven jar 项目,package 目标将在 jar 的根目录中生成一个带有 /src/main/resources 的 jar 文件,所有子文件夹都从那里扩展。

    如果您将 /src/main/resources 放在构建类路径中,Eclipse 可以做同样的事情。

    无论哪种方式,您都必须告诉 Spring 在类路径中查找上下文 xml 文件,假设它直接位于 /src/main/resources 而不是子文件夹中。

    当您告诉 Spring 构建 BeanFactory(或 ApplicationContext 或其他)时,不要使用 /src/main/resources/spring-context.xml 作为文件名。使用spring-context.xml 并用FileSystemXmlApplicationContext("classpath:spring-context.xml") 之类的东西告诉它它在类路径中。或者你可以使用ClassPathXmlApplicationContext("spring-context.xml")

    当您将 /src/main/resources 添加到 Eclipse 类路径时,您可以在 Eclipse 或 jar 中运行。

    【讨论】:

    • Lee,我用 Maven 生成了 JAR。但是,没有创建 src/main/resources。相反,资源文件放置在 JAR 的根目录中。我在这里做错了吗?
    • Lee,是的,src/main/resources 文件夹在类路径中,我正在加载 Spring Context 文件没有问题。问题是 bean 是用具有以下值的属性实例化的:“src/main/resources”。这允许 bean 知道它应该从哪里加载 CSV 文件。我想我应该改变程序查找这个 CSV 文件的方式?
    • 是的。从类路径将其作为资源加载。
    猜你喜欢
    • 1970-01-01
    • 2012-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-08
    相关资源
    最近更新 更多