为什么在Eclipse插件开发中属性加载方法失败?

时间:2013-10-25 05:50:10

标签: java properties eclipse-plugin

我正在尝试在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");

一切顺利。

所有提示?

1 个答案:

答案 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目录