我正在尝试在Eclipse插件项目中使用Properties's load()
方法。因为我想把propertiesie文件放在这样的文件夹中:
Pluging Project/
|
+----/src/...
+----/config/config.properties
+----/icons/...
+----META-IN/
+----build.properties
+----plugin.xml
然后我尝试这样的代码,但失败:
Properties prop = new Properties();
InputStream inputStream = (InputStream) Activator.getDefault().getBundle().getEntry("/config/config.properties").getContent();
prop.load(inputStream);
此方法接收输入字节流作为参数。而且我很确定Activator.getDefault().getBundle().getEntry()
会返回一个InputStream。
如果我将属性文件放在调用类的相同位置并使用
InputStream inputStream = this.getClass().getResourceAsStream("config.properties");
一切顺利。
所有提示?
答案 0 :(得分:1)
URL
返回的Bundle.getEntry
使用内部Eclipse方案,并不总是支持getContents()
。您需要致电org.eclipse.core.runtime.FileLocator.toFileURL()
进行转换:
URL url = Activator.getDefault().getBundle().getEntry("/config/config.properties");
url = FileLocator.toFileURL(url);
InputStream inputStream = (InputStream)url.getContent();
还要确保config
build.properties
目录