0

我正在尝试向插件添加一个片段,以便在不触及插件的情况下将信息添加到插件中。

但是,我遇到的问题是我可以从片段中访问插件中的资源,但反之则不行。

这就是我获取两个项目的资源和清单的方式。资源文件“patch.xml”位于 /src 文件夹中。

测试插件2:

主类:

public class Main{

    public static void main(String[] args) {
        RetrieveResource ma = new RetrieveResource();
        ma.retrieve();
    }
}

检索资源:

public class RetrieveResource {

    public RetrieveResource(){

    }

    public void retrieve(){
        URL url = this.getClass().getClassLoader().getResource("patch.xml");
        System.out.println(url);
    }
}

url 始终为空。

清单.mf:

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Plugin2
Bundle-SymbolicName: test.plugin2;singleton:=true
Bundle-Version: 1.0.0.qualifier
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Require-Bundle: org.eclipse.core.runtime;bundle-version="3.7.0"

build.properties

source.. = src/
output.. = bin/
bin.includes = META-INF/,\
               .,\

测试片段2:

清单文件

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Fragment2
Bundle-SymbolicName: test.fragment2
Bundle-Version: 1.0.0.qualifier
Fragment-Host: test.plugin2;bundle-version="1.0.0.qualifier"
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Export-Package: test.fragment2.classes

build.properties

source.. = src/
output.. = bin/
bin.includes = META-INF/,\
               .,\

缺少什么或我哪里出错了?
甚至可以从插件访问片段吗?

问题已解决: 在我的测试中,我以“java 应用程序”模式启动 test.plugin2 项目。由于片段和插件必须在运行时合并,应用程序必须以“eclipse应用程序”模式启动,获取资源不会有问题。

4

1 回答 1

1

使用FileLocator.find(in org.eclipse.core.runtime) 在插件和片段中搜索资源。

Bundle bundle = ... your plugin Bundle

IPath path = new Path("patch.xml");

URL url = FileLocator.find(bundle, path, null);
于 2014-08-08T09:49:56.160 回答