我正在从我的 google appengine 应用程序的文件夹 (/war/config/client.properties) 中读取属性文件。它在我的本地服务器上运行良好,但在生产模式下无法运行,并且抛出异常 java.security.AccessControlException: access denied (java.io.FilePermission)。
你能告诉我如何让它在生产模式下工作吗?
我正在从我的 google appengine 应用程序的文件夹 (/war/config/client.properties) 中读取属性文件。它在我的本地服务器上运行良好,但在生产模式下无法运行,并且抛出异常 java.security.AccessControlException: access denied (java.io.FilePermission)。
你能告诉我如何让它在生产模式下工作吗?
如果你把它放在 WEB-INF/classes 中,你可以像这样加载它:
InputStream is = this.getClass().getClassLoader().getResourceAsStream("/client.properties");
同样你可以做
InputStream is = this.getServletContext().getResourceAsStream("/WEB-INF/client.properties");
然后:
Properties props = new Properties();
props.load(is);
String whatever = props.getProperty("whatever_key");
根据文档https://developers.google.com/appengine/docs/java/?hl=en-US#The_Sandbox:
战争中的任何东西都应该默认工作:
确保您没有排除 appengine-web.xml 中的任何内容):
<resource-files>
<exclude path="**.properties"/> ...make sure you haven't done this
</resource-files>
默认情况下,战争中的任何东西都应该可以工作,所以请尝试阅读/config/client.properties
java.io.FileReader 肯定会。
或者
InputStream is = this.getServletContext().getResourceAsStream("/config/client.properties");