要创建Eclipse插件,我需要将一些资源导入/使用到样式表中。 所有必要的文件都驻留在插件包中,并且在最终的.jar中没有错误地正确构建。
我在插件包中有这个文件夹/文件:
> my.plugin.package.name
> META-INF/
> MANIFEST.MF
> resources/
> css/
> base-stylesheet.css
> win-stylesheet.css
> linux-stylesheet.css
> ...
> images/
> mytexture.png
> ...
> plugin.xml
> ...
win-stylesheet.css 中的我要导入 base-stylesheet.css 并使用 mytexture.png ,所以进入CSS我做:
@import url("base-stylesheet.css");
#elemId {
background-image: url(../images/mytexture.png);
}
不幸的是,这些提供了 MalformedURLException ,我也注意到了:
@import url("/base-stylesheet.css")
或@import url("./base-stylesheet.css")
完全正常工作,但是当在Eclipse中安装插件jar时,静默失败并出现相同的错误; @import url("platform:/plugin/my.plugin.id/resources/css/base-stylesheet.css")
或@import url("platform://plugin/my.plugin.id/resources/css/base-stylesheet.css")
其中my.plugin.id
是 MANIFEST.MF 中指定的 Bundle-SymbolicName ,同样会产生同样的错误在运行/调试插件时以及在安装jar后使用它时。我怀疑工作区目录会自动分配到platform:/plugin/org.eclipse.platform/
。
我该如何解决?
答案 0 :(得分:2)
现有的Eclipse样式表只使用
@import url("base-stylesheet.css");
表示同一目录中的css。
对于资源,您可以在产品扩展点属性的applicationCSSResources
属性中指定位置:
<extension
id="product"
point="org.eclipse.core.runtime.products">
<product
name="%product.name"
application="org.eclipse.e4.ui.workbench.swt.E4Application">
<property
name="applicationCSSResources"
value="platform:/plugin/my.plugin.package.name/images/">
</property>
答案 1 :(得分:2)
来自Lars Vogel的博客文章“Import CSS files in Eclipse Luna M6”似乎暗示导入现在有效,这意味着您至少需要一个Eclipse 4.4 Luna M6。
不仅4.4 M6版本附带dark theme for the IDE,它还列出:
CSS包含
Eclipse的CSS文件现在可以通过
@import url("platform:/plugin/Bundle-Symbolic-Name/path/file.extension");
语句包含其他CSS文件 这样可以轻松重复使用现有样式表。
例如(沃格尔的帖子):
在您的RCP应用程序中,只用一条指令创建一个
/css/default.css
文件:
@import url(“platform:/plugin/org.eclipse.ui.themes/css/e4-dark.css”);
将
org.eclipse.ui.themes
添加到您的RCP产品,并在applicationCSS
扩展点中添加指向platform:/plugin/test/css/default.css
的{{1}}媒体资源。