使用启用了安全管理器的 Tomcat 时,在类路径中找不到属性文件

Posted

技术标签:

【中文标题】使用启用了安全管理器的 Tomcat 时,在类路径中找不到属性文件【英文标题】:Properties file not found in classpath when using Tomcat with security manager enabled 【发布时间】:2013-07-24 19:20:09 【问题描述】:

我有一个我的 Web 应用程序需要的属性,但它在打包时不可用。所以我把它放在 TOMCAT_HOME/lib 中,应用程序发现它没有问题。当我在启用安全管理器的情况下运行 Tomcat 时,永远找不到该文件。我已授予阅读权限,但仍未找到。我没有收到任何安全错误消息,只是文件丢失。

在启用安全管理器的情况下运行 Tomcat 时,类路径是否不同?是不是更受限制?

【问题讨论】:

您是如何尝试加载此属性文件的?代码示例会有所帮助。 我正在使用 apache 配置文件“PropertiesConfiguration.java”。它需要一个参数,该参数是要读取的属性文件的名称。它在类路径中找到此文件。 PropertiesConfiguration config = new PropertiesConfiguration("myfile.properties"); 【参考方案1】:

我发现了问题。我的代码使用的是:

Thread.currentThread().getContextClassLoader().getResourceAsStream(inputFile);

我需要授予 RuntimePermission 以获取类加载器。

permission java.lang.RuntimePermission "getClassloader";

【讨论】:

以上是关于使用启用了安全管理器的 Tomcat 时,在类路径中找不到属性文件的主要内容,如果未能解决你的问题,请参考以下文章

Tomcat 安装为服务后台自动启用

spring,mybatis 整合 启用tomcat 报错

在带有安全管理器的 tomcat 中使用 log4j

无法在类库中为实体框架启用迁移

[轻微]WEB服务器启用了OPTIONS方法/如何禁止DELETE,PUT,OPTIONS等协议访问应用程序/tomcat下禁用不安全的http方法

tomcat的安全配置(禁用http方法,部署多个应用,启用从安全cookie,指定错误页面和显示信息)