我正在开发一个 Eclipse 插件项目。在该项目中,我有一个文件夹 resources
,其中包含一个简单的 ASCII 文件,其中包含带有 String
的行。这些 String
由 ui 在下拉菜单中使用。如果我运行新的启动时 Eclipse,一切都会正常工作,并且下拉菜单成功使用文件内容,但如果我导出应用程序并运行它,下拉菜单为空,这意味着,该文件无法读取。
在 plugin.xml
(“构建”选项卡)内,我已在二进制构建中标记了资源文件夹(其中包含 ASCII 文件)。
这是我逐行提取文件的方法:
public class ParameterExtractor {
private final static String FILE_PATH = "/resources/parameters";
public ArrayList<String> extractParameters() throws IOException {
ArrayList<String> params = new ArrayList<String>();
URL url = FileLocator.resolve(getClass().getResource(FILE_PATH));
URI uri = null;
try {
uri = url.toURI();
} catch (URISyntaxException e) {
e.printStackTrace();
}
if (uri != null) {
try {
File file = new File(uri);
FileReader fileReader = new FileReader(file);
BufferedReader bufferedReader = new BufferedReader(fileReader);
String line;
while ((line = bufferedReader.readLine()) != null) {
params.add(line);
}
fileReader.close();
} catch (Exception ioe) {
ioe.printStackTrace();
}
}
return params;
}
}
这就是我使用返回的ArrayList
的方式:
ArrayList<String> params = new ArrayList<String>();
try {
params = new ParameterExtractor().extractParameters();
} catch (IOException e1) {
e1.printStackTrace();
}
final Combo combo = new Combo(container, SWT.BORDER);
combo.setItems(params.toArray(new String[params.size()]));
什么可能导致该问题以及如何解决?
如果有任何帮助,我将不胜感激!
最佳答案
FileLocator.resolve
不保证返回可用于读取文件的 URL。而是使用:
Bundle bundle = ... your plugin bundle
URL url = FileLocator.find(bundle, new Path(FILE_PATH), null);
url = FileLocator.toFileURL(url);
toFileURL
返回的 URL 适合使用 File
和 FileReader
读取。
关于java - 导出后 Eclipse 插件项目中的 ASCII 文件不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33667067/