【问题标题】:Tomcat 9 specify config folder pathTomcat 9 指定配置文件夹路径
【发布时间】:2020-09-21 11:01:10
【问题描述】:

我在 Tomcat 9 中运行一个需要读取多个 .config 文件的应用程序,但我得到了一个 java.io.IOException

这些 .config 文件位于 WebContent 文件夹中。

如何让 Tomcat 读取此路径? 可以与项目的 IntelliJ 设置相关吗?

这是加载配置文件的方式:

 ClassLoader classLoader = Thread.currentThread().getContextClassLoader();

InputStream is = classLoader.getResourceAsStream(this.configFile);

this.configFile 的值为:cnp-filter.config

【问题讨论】:

  • 您需要从 CLASSPATH 而不是从文件系统中获取它们。看stackoverflow.com/questions/20451386/java-jar-cant-find-file
  • 是的,它实际上是从类路径中获取的 @Michal
  • 您能告诉我们用于读取这些资源的代码吗?此外,您还可以显示错误产生的确切堆栈跟踪吗?从 JDK 9 JavaDoc 开始,ClassLoader.getResourceAsStream() 实际上不会抛出 IOException。
  • 我当然要添加它。奇怪的是代码之前在 WebSphere 服务器上运行。
  • @Michal 我已经在帖子中添加了。

标签: java tomcat


【解决方案1】:

CLASSPATH 资源需要在WEB-INF/classes 下。请把配置文件放在src/main/resources 下进行maven 项目。

或者,直接在WEB-INF 下的资源可以通过ServletContext#getResourceAsStream(String path) 访问。

【讨论】:

  • 目前 .config 文件在 Webcontent 文件夹中,我应该把它们放在哪里?
  • src/main/resources 如果它是一个 Maven 项目?如果不是 maven 项目,则为 Java 类的默认包。
  • 我没有 src/main/resources 但我有 projectName/resources/,怎么办?
【解决方案2】:

试试这个:

ClassLoader classLoader = getClass().getClassLoader();
InputStream input = classLoader.getResourceAsStream("your absolute path ");

这可能会有所帮助。

【讨论】:

  • 是的,我正在使用相同的,但仍然存在问题。
  • 尝试给出完整路径
猜你喜欢
  • 1970-01-01
  • 2023-01-23
  • 2012-07-23
  • 1970-01-01
  • 1970-01-01
  • 2018-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多