我的工作区内有一个文件夹,但在'src'之外,其中包含一个文件,需要在使用自定义插件向导时设置新文件。
我无法正确获取此文件的位置并继续获取空指针,除非我指定文件在系统中的确切位置。我的问题是文件是在一个插件项目中,我无法得到它的位置。
插件中的文件位置是com.my.plugin / rules / setup.txt
答案 0 :(得分:7)
要从已部署的捆绑包加载资源,您可以执行以下操作(要加载的资源需要包含在build.properties
二进制生成设置中):
Bundle bundle = YourBundleActivator.getDefault().getBundle();
IPath path = new Path("rules/setup.txt");
URL setupUrl = FileLocator.find(bundle, path, Collections.EMPTY_MAP);
File setupFile = new File(FileLocator.toFileURL(setupUrl).toURI());
请注意,这与从工作区中获取内容不同,因为在捆绑包运行时,在工作区中查找内容将引用运行时工作区,而不是开发工作区。如果您确实需要运行时工作区中的某些内容,则可以像这样访问它:
IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
IResource resourceInRuntimeWorkspace = root.findMember("rules/setup.txt");
File file = new File(resourceInRuntimeWorkspace.getLocationURI());
答案 1 :(得分:0)
假设你有类似的东西:
从Blah.java你应该能够做到这样的事情:
URL urlToFile = getClass().getResource("/plugin/commyplugin/rules/setup.txt");
然后从那里创建一个文件或使用getResourceAsStream返回一个InputStream。
我在这里猜测:)