我需要将 Java 项目导出为可执行文件,例如 JAR。该项目使用 Spring XML 上下文文件来实例化一个 bean,并使用以下值注入它:“src/main/resources/”,它对应于 CSV 文件的位置。
当我生成 JAR 时,“src/main/resources”文件夹不是 JAR 的一部分,因此执行失败,因为 bean 无法加载所需的 CSV 文件。
处理这个问题的最佳方法是什么?生成可执行 JAR 的最佳方法是什么?从 Eclipse 导出?Maven 程序集插件?
Maven 通常会将“src/main/resources”中的内容部署到您的 webapp 的 WEB-INF 目录中。
如果这是一个 Mavenjar
项目,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 中运行。