目前我正在使用Jetty和Equinox开发基于OSGi的Web应用程序(参见:http://wiki.eclipse.org/Jetty/Tutorial/EclipseRT-Jetty-Starter-Kit)。 到目前为止,一切都很好,但是我无法访问我自己bundle的某些文件/资源。这些文件/资源的位置/路径是“configuration/data/config.csv”和“configuration/data/data.zip”。 我已经测试了一切:
context.getBundleContext().getBundle().getEntry("config.csv");
context.getBundleContext().getBundle().getResource("config.csv");
this.getClass().getClassLoader().getResource("config.csv");
context.getBundleContext().getDataFile("config.csv");
当然还有所有可能的路径变体,例如:"configuration/data/config.csv"、"/configuration/data/config.csv"、"\configuration/data/config.csv"、"/config.csv"。 此外,我已经将文件夹添加到了OSGi类路径中(在MANIFEST.MF文件中):
Bundle-ClassPath: .,
configuration/data/
生成的URL始终是这样的(或为null): "configuration/CBR-Data/config.csv",当我将其转换为文件对象时变成了"D:\configuration\CBR-Data\config.csv"。
但我真正不理解的是,我的一个数据源的属性文件可以完美地加载:
<properties entry="configuration/dsconfig.properties"/>
有人有什么想法/提示或其他东西吗?我快疯了...
URL configURL = context.getBundleContext().getBundle().getEntry("configuration/data/confid.csv");
的输出是"bundleentry://6.fwk33311724/configuration/data/config.csv"。我尝试通过以下方式将URL转换为文件:File configFile = new File(configURL.getPath());
。路径输出configFile.getAbsolutePath();
是:"D:\configuration\data\config.csv"。 - Zitzit