在java中访问属性文件不在构建路径上
我创建了一个java maven web应用程序。现在我的问题是,我必须使用资源包或Properties类访问属性文件。但是这个属性文件位于webapp/resources文件夹中,即与我的js和css文件在同一个目录中。在java中访问属性文件不在构建路径上
我有这个实用的方法,但如果需要,我可以写新的:
public static ResourceBundle getBundle(String baseName, String absolutePath) {
File file = new File(absolutePath);
ResourceBundle bundle = null;
try {
URL[] urls = { file.toURI().toURL() };
ClassLoader loader = Thread.currentThread().getContextClassLoader();
bundle = ResourceBundle.getBundle(baseName, Locale.getDefault(), loader);
} catch (MalformedURLException e) {
}
return bundle;
}
我的项目结构:
-project
-------src
--------main
---------java
---------resources
---------webapp
----------resources
-----------app.properties
-----------script.js
可以发出一个HttpURLConnection的自己(MYDOMAIN/MYAPP /资源/ app.properties),但我会说这是一个丑陋的解决方案
更常见的做法是将你的app.properties重定位到你的类路径中(例如:src/main/resources)。那么如果你使用Spring,你可以使用ClasspathResource。否则,你可以看到这篇文章:How to really read text file from classpath in Java
记住把app.properties有可能意味着你所有的用户能够读取app.properties
其实我已经阅读了一些在classpath上的文件。 ..但是这个文件需要在这里,因为我的js使用这个文件通过ajax调用它..并且它不包含任何敏感数据.. – 2013-03-28 09:25:05
我终于得到它加入我的web应用程序/文件夹资源工作到类路径。 将它添加到classpath之后,我们可以简单地这样做 -
ResourceBundle bundle = ResourceBundle.getBundle(bundleName);
但是我没有在任何servlet中使用它。这是简单的java类。 – 2013-03-28 11:27:38
但是该类用于Web应用程序?然后,您可以将ServletContext作为参数传递给方法。或者甚至更好,在需要ResourceBundle的地方使用ServletContext,并将URL传递给方法。这显然要求您更改实用方法的签名。 – NilsH 2013-03-28 12:21:19
我试图让它保持不变。像这样.. public static final ResourceBundle MIME_TYPES = SVNUtil.getMimeTypes(); – 2013-03-28 12:26:59