【问题标题】:Why does my Eclipse launch config ignore my plug-in's environment specification?为什么我的 Eclipse 启动配置会忽略我的插件的环境规范?
【发布时间】:2021-10-18 13:20:32
【问题描述】:

在我的大项目中,我有一个 Eclipse 应用程序启动配置。它根据选定的功能(功能是插件组)启动应用程序。

在其中一项功能中,有一个插件被指定为仅在 Linux 环境中启动时才安装。这就是feature.xml 文件中的内容:

<plugin
    id="com.company.package.cool.plugin"
    os="linux"
    ws="gtk"
    arch="x86_64"
    download-size="0"
    install-size="0"
    version="0.0.0"
    unpack="false"/>

然而,当应用程序在 Windows 环境中启动时,Eclipse 会安装插件。

为什么 Eclipse 会忽略它自己的规范?有解决办法吗?有解决办法吗?

【问题讨论】:

    标签: eclipse osgi osgi-bundle


    【解决方案1】:

    插件的 MANIFEST.MF 中的 Eclipse-PlatformFilter 控制插件何时“解析”。将您的插件转换为片段并添加此行(仅 macOS 示例):

    Eclipse-PlatformFilter: (& (osgi.ws=cocoa) (osgi.os=macosx) (osgi.arch=x86_64) )
    

    我不确定,但我认为 feature.xml 规范仅供安装人员使用。

    更多信息请访问vogel/a

    【讨论】:

    • 这...有点工作。启动应用程序给我一个警告,“平台过滤器不匹配:(& (osgi.ws=gtk) (osgi.os=linux) (osgi.arch=x86_64) )”对于有问题的插件。如果我继续启动,则会抛出 BundleException,因为无法解析插件。
    • 如果你在普通插件上使用这个,你不能在其他插件中使用Require-Bundle来引用它,因为它可能无法解析。通常你只需在片段see here 上指定它
    • 该插件未被任何其他插件使用Require-Bundle 引用。 “通常你只是在片段上指定它”是什么意思?
    • 您有一个没有平台过滤器的普通插件和具有过滤器的插件片段。例如,SWT 有org.eclipse.swt 普通插件和每个操作系统的片段org.eclipse.swt.cocoa.macosx.x86_64。由于主插件始终存在,因此您不会收到缺少插件的错误。
    • 这是意料之中的,不是错误。它只是告诉您该片段实际上不会用于此运行配置
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-03
    • 1970-01-01
    • 2014-06-15
    • 2017-09-06
    相关资源
    最近更新 更多