运行 local vs package maven 时,Springboot 应用程序读取不同的路径

Springboot app read different path when run local vs package maven

因此,我正在开发一个应用程序并尝试在主 class 中使用 @ImportResource 来引用包含 SOAP 服务配置的 xml 文件。当我在我的本地尝试 run/debug 它工作得很好,但是当我使用 maven 包构建 jar 时,它产生 java.io.FileNotFoundException 错误。

这是我的主要内容class

@SpringBootApplication
@ImportResource(locations = "jaxwsconfig.xml")
public class SoapApplication {

    public static void main(String[] args) {
        SpringApplication.run(SoapApplication.class, args);
    }

    @Bean
    public ServletRegistrationBean servletRegistrationBean() {
        return new ServletRegistrationBean(new WSSpringServlet(), "/Services");
    }
}

这是我在使用 maven 包时遇到的一些错误

IOException parsing XML document from ServletContext resource [/jaxwsconfig.xml]; nested exception is java.io.FileNotFoundException: Could not open ServletContext resource [/jaxwsconfig.xml]

PS: 我对文件路径有疑问。 Java Spring 不定义绝对路径指的是哪里?就像在这种情况下,当我只定义“jaxwsconfig.xml”时,它指的是哪里?

如果你的jaxwsconfig.xml文件在资源文件夹即src/main/resource下,你可以直接给它,

@ImportResource({"classpath*:applicationContext.xml"})

如果假设文件存在于资源 src/main/resource/foldername 内的文件夹中。你必须给,

@ImportResource(locations = {"classpath:foldername/application-context.xml"})