【问题标题】:Spring Boot/Intellij Resource not loading from src/main/resources folderSpring Boot/Intellij 资源未从 src/main/resources 文件夹加载
【发布时间】:2026-01-08 13:50:02
【问题描述】:

Spring Boot - 1.4.1; IDE - IntelliJ 2016.3.EAP

我正在尝试加载如下资源;

f = new File("src/main/resources/PROD_SiteMinder.properties");

System.setProperty("javax.net.ssl.trustStore","src/main/resources/BETA_StagingNewCert.jks");

当我从 IDE 运行应用程序时,这两个都可以正常工作,但是当我尝试将应用程序构建为 war 并将其部署到 Tomcat 时,它们都无法正常工作。

有人可以帮我解决这个问题吗?

谢谢

【问题讨论】:

  • 你在用maven吗?在 war 文件中没有 src/main/resources 因此它没有被发现。请参阅:maven.apache.org/plugins/maven-war-plugin/examples/… 例如。此外,当您使用spring时,为什么不使用ClassPathResource而不是File
  • @Daniel - 感谢您的回复。
  • @Daniel - 是的,我正在使用 maven,这种方式对我来说很长一段时间都很好。我想我更新了一些东西,我不记得我做了什么,现在它正在工作。我会检查您提供的信息,再次感谢。
  • 在 IntelliJ 中,您可以使用还包含资源文件夹的爆炸战争文件进行快速测试。也许你以前用过这个?尽管据我所知,这并不意味着富有成效。有关更多信息,请参阅此maven.apache.org/plugins/maven-war-plugin/usage.html
  • 为什么不使用ClassPathResource

标签: spring intellij-idea spring-boot


【解决方案1】:

我认为您不想从生产代码中加载“src/...”。源在运行时不可用。通常,会从类路径加载(src/main/resources 中的任何内容都将被复制并在类路径的根目录下可用——new File("PROD_SiteMinder.properties")

也就是说,如果您使用 Spring,则更喜欢 ClassPathResource 而不是 new File(...)

祝你好运。

【讨论】: