我有2个插件A和b。我在Require-Bundle部分有插件B。但是当我试图从A类中获取B的资源时
ClassFromA.class.getClassLoader().getResource('resource_from_B')
我得到null。如果我把B的资源(文件夹)放在A的根目录上,一切都像一个魅力。我错过了什么吗?
注:我读了拉尔斯·沃格尔的文章
Bundle bundle = Platform.getBundle("de.vogella.example.readfile");
URL fileURL = bundle.getEntry("files/test.txt");
File file = null;
try {
file = new File(FileLocator.resolve(fileURL).toURI());
} catch (URISyntaxException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}
^这个解决方案在我从eclipse运行插件时有效,但当我将插件打包到jar并尝试从本地更新站点安装时
java.lang.IllegalArgumentException: URI is not hierarchical
附言:我也读过几个关于堆栈溢出的相关问题,但无法找到答案:
解决方案:非常感谢@greg-449。所以正确的代码是:
Bundle bundle = Platform.getBundle("resource_from_some_plugin");
URL fileURL = bundle.getEntry("files/test.txt");
File file = null;
try {
URL resolvedFileURL = FileLocator.toFileURL(fileURL);
// We need to use the 3-arg constructor of URI in order to properly escape file system chars
URI resolvedURI = new URI(resolvedFileURL.getProtocol(), resolvedFileURL.getPath(), null);
File file = new File(resolvedURI);
} catch (URISyntaxException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}
注意:为了正确转义文件系统字符,使用URI的3-arg构造函数也很重要。
为什么不使用捆绑包?这似乎是OSGi访问资源的方式。
如果使用< code > class fromb . class . get class loader 而不是< code>A,第一次尝试可能会成功。
使用
java prettyprint-override">FileLocator.toFileURL(fileURL)
而不是FileLocator。当您想将URL与
File一起使用时,resolve(fileURL)
。
当插件打包到jar中时,这将导致Eclipse在临时位置创建一个未打包的版本,以便可以使用
File
访问该对象。
我正在使用Eclipse Plugin-in-project开发一个Eclipse插件,它将在工具栏中添加一个菜单项。 请帮我解决这个问题!
我如何通过我自己的API从另一个API获取PDF,然后到前面供用户下载。 我现在得到的只是一张空白页。 后面是Scala的,当我打印文件时,我得到一个字符串。
问题内容: 我有一个包含多个Maven模块的项目 MockIFSClient 访问为 因此 IFSClientTest 运行鳍,因为它们在同一包中。 问题? 尝试访问相同代码的 调用,但现在失败,因为 services / pom.xml 具有以下依赖性 题 我要做出什么改变 这样也可以从不同的模块访问它 问题答案: 这个答案帮助我正确了 如何从Java中的类路径真正读取文本文件 我将代码更改为
问题内容: 假设我在first.com中说一个用户设置了一个cookie。现在,我想通过javascript和ajax在second.com中读取该cookie。但这不起作用。我有xmlHttp.status = 0。 样例代码 在第二个域的readcookie.php文件中 在第一个域cookie.php文件中 问题答案: 您无法从其他域读取Cookie-结尾。 我能想到的唯一方法是将一些代码添
我在Android开发者网站http://developer.Android.com/training/animation/screen-slide.html上学习这个教程 我的情况是...