我按照该论坛中建议的步骤操作,通过从org.eclipse.platform复制css和images文件夹来获取不同操作系统的CSS主题。
当我从Eclipse启动它时,它工作正常,但是当我导出产品文件(无论是从Eclipse还是通过Maven)时,根本没有CSS样式。
我已经检查了build.properties,并将css和images文件夹标记为要导出,所以我不明白为什么找不到它们。
我正在将3.x RCP软迁移到4.x
id="liteproduct"
point="org.eclipse.core.runtime.products">
application="com.xyzide.rcp.application"
name="XYZ IDE">
name="applicationXMI"
value="com.xyzide.rcp/LegacyIDE.e4xmi">
name="cssTheme"
value="com.xyzide.ui.css.theme.e4_default">
name="applicationCSSResources"
value="platform:/plugin/com.xyzide.rcp/images/">
point="org.eclipse.e4.ui.css.swt.theme">
basestylesheeturi="css/e4_default.css"
id="com.xyzide.ui.css.theme.e4_default.noos"
label="Default Theme">
basestylesheeturi="css/e4_classic_winxp.css"
id="com.xyzide.ui.css.theme.e4_classic"
label="Classic">
basestylesheeturi="css/e4_default_gtk.css"
id="com.xyzide.ui.css.theme.e4_default"
label="GTK"
os="linux">
basestylesheeturi="css/e4_default_mac.css"
id="com.xyzide.ui.css.theme.e4_default"
label="Mac"
os="macosx">
basestylesheeturi="css/e4_default_win7.css"
id="com.xyzide.ui.css.theme.e4_default"
label="Windows 7"
os="win32"
os_version="6.1">
basestylesheeturi="css/e4_default_winxp_blu.css"
id="com.xyzide.ui.css.theme.e4_default"
label="Windows XP Blue"
os="win32">
basestylesheeturi="css/e4_default_winxp_olv.css"
id="com.xyzide.ui.css.theme.e4_default.xpolive"
label="Windows XP Olive"
os="win32">
basestylesheeturi="css/e4_classic_win7.css"
id="com.xyzide.ui.css.theme.e4_classic"
label="Windows 7 Classic"
os="win32"
os_version="6.1">
basestylesheeturi="css/e4_default_gtk.css"
id="com.xyzide.ui.css.theme.e4_default"
label="Solaris"
os="solaris">
basestylesheeturi="css/e4_default_gtk.css"
id="com.xyzide.ui.css.theme.e4_default"
label="AIX"
os="aix">
basestylesheeturi="css/e4_classic_winxp.css"
id="com.xyzide.ui.css.theme.e4_default"
label="HPUX"
os="hpux">
我从产品扩展中省略了一些不相关的属性。
您在定义产品的plugin.xml中拥有什么?
我已经用代码更新了问题。
plugin.xml看起来不错。 检查导出的产品插件是否确实包含css目录。
我的产品由两个插件组成:com.xyzide.plugin和com.xyzide.rcp。 后者是包含css文件的文件,而在我的导出产品中是jar文件,那么如何检查css文件夹? 在我的build.properties中,检查导出。 另外,在此之前,我已经固定了样式,并且效果很好(ApplicationCSS属性)
啊哈...我想我已经找到了...出于某种原因,我不得不将其导出为目录而不是jar文件,并且它似乎可以正常工作。 我不知道为什么它与ApplicationCSS一起使用,因为它也有一个css和images文件夹!
我认为,如果您在basestylesheeturi值的开头包含platform:/plugin/com.xyzide.rcp/,这将在jar中起作用。
使用jar会占用较少的空间,但是我注意到Eclipse安装确实使用了目录(可能只是为了简化访问文件的过程)。 Eclipse有时确实将jar扩展到其缓存中,但是我认为CSS和图像文件无法做到这一点。
因此,不幸的是,这似乎没有用,我不得不恢复到目录设置。 可能与此有关-eclipse.org/forums/index.php/t/457837
可能。 我不在样式表中使用CSS导入。
我已在所有操作系统上对其进行了测试,并且仅在捆绑包为目录的情况下才可以使用。...对不起,我不得不拒绝您的回答,但我一定会投票赞成!
因此,在greg-449的帮助下,我能够确定导出RCP时,需要将包含css和images文件夹的插件打包为一个目录。
我在Manifest.MF中添加了以下内容
Eclipse-BundleShape: dir
当我导出时,样式效果很好。 我至少在Windows上测试过它,看起来还可以。 还将需要检查其他操作系统。
我认为,如果您在basestylesheeturi值的开头包含platform:plugincom.xyzide.rcp(至少这是我所拥有的并且可以正常工作),则可以使它在jar中工作。
抱歉,这可能是一个愚蠢的问题,但是有什么原因为什么我想要将其保留为jar而不是目录?
你是对的! 我怎么会这么愚蠢……我回过头来看看ApplicationCSS的旧代码,这就是我的理解方式。 我想我只是在论坛上直接使用了这段代码,却没有意识到。 您能否发表评论作为答案,我会接受。