我有一个 Eclipse E4 RCP 产品,它曾经可以使用 Eclipse 4.29 导出。 导出在多个平台上运行良好(通常是 gtk.linux.x86_64 和 win32.win32.x86_64)。
我有一个新安装的 Eclipse IDE 4.31 用于 RCP 开发(使用 java-17-openjdk 和 kubuntu 23-10)。而且工作区也是一个新的(因为迁移旧的工作区后来在IDE中产生了一些异常,但这不是现在的问题)。我删除了一些
javax
依赖项,因为它们在 Eclipse 4.30 中已弃用(注释和注入以及 servlet-api 作为某些平台包的依赖项)。
除了将注释和注入导入的
javax
重命名为 jakarta
之外,该项目保持不变。产品定义(内容选项卡)已针对新的依赖项进行了调整。该项目编译得很好。
当我将产品导出到(单一)Linux 平台时,这可以正常工作,不会出现错误。但是,导出中的
org.eclipse.equinox.launcher.gtk.linux.x86_64_1.2.900.v20240129-1338
文件夹中缺少文件夹 plugins
。因此,该产品无法启动,因为启动程序共享库驻留在该文件夹中。 如果我从 p2 缓存添加文件夹(.../workspaces/Skylog_4/.metadata/.plugins/org.eclipse.pde.core/.bundle_pool/plugins),产品将正常启动并按设计工作。
当我导出到多个平台时,我收到一条错误,指出无法解决对 win32 启动器 (
org.eclipse.equinox.launcher.win32.win32.x86_64_1.2.900.v20240213-1244
) 的依赖关系。该插件存在于目标中(在内容文件夹中可见),并且也在 p2 缓存中(见上文)。
我还尝试了 Eclipse 4.30 作为目标,它产生了相同的结果(缺少文件夹或未解决的 win32 依赖项)。
这是我的新目标定义:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?pde version="3.8"?>
<target name="Eclipse RCP 4.31">
<locations>
<location includeAllPlatforms="true" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
<repository location="https://download.eclipse.org/releases/2024-03"/>
<unit id="org.eclipse.equinox.sdk.feature.group" version="3.23.1100.v20240218-1855"/>
<unit id="org.eclipse.sdk.feature.group" version="4.31.0.v20240229-1022"/>
<unit id="org.eclipse.rcp.source.feature.group" version="4.31.0.v20240229-0520"/>
<unit id="org.eclipse.emf.sdk.feature.group" version="2.37.0.v20240203-1010"/>
</location>
<location includeAllPlatforms="true" includeConfigurePhase="true" includeMode="planner" includeSource="true" type="InstallableUnit">
<repository location="https://download.eclipse.org/tools/orbit/simrel/orbit-aggregation/release/latest"/>
<unit id="jakarta.inject.jakarta.inject-api" version="2.0.1"/>
<unit id="jakarta.annotation-api" version="2.1.1"/>
<unit id="org.apache.commons.commons-io" version="2.15.1"/>
<unit id="org.apache.commons.commons-logging" version="1.3.0"/>
<unit id="org.apache.commons.jxpath" version="1.3.0"/>
<unit id="jakarta.servlet-api" version="4.0.0"/>
<unit id="com.sun.jna" version="5.14.0.v20231211-1200"/>
<unit id="com.sun.jna.platform" version="5.14.0"/>
</location>
</locations>
</target>
它使用新的(可能只适合我)轨道聚合存储库,而不是旧定义中使用的各种下降。所以现在也使用推荐的来源。
这是 Explipse 4.29 使用的旧目标定义:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?pde version="3.8"?>
<target name="Skylog 4 RCP 4.29">
<locations>
<location includeAllPlatforms="true" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
<repository location="http://download.eclipse.org/releases/2023-09"/>
<unit id="org.eclipse.emf.sdk.feature.group" version="2.35.0.v20230829-0934"/>
<unit id="org.eclipse.sdk.feature.group" version="4.29.0.v20230903-1000"/>
</location>
<location includeAllPlatforms="true" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
<repository location="http://download.eclipse.org/eclipse/updates/4.29"/>
<unit id="org.eclipse.equinox.sdk.feature.group" version="3.23.900.v20230808-1403"/>
<unit id="org.eclipse.rcp.feature.group" version="4.29.0.v20230903-1000"/>
<unit id="org.eclipse.rcp.source.feature.group" version="4.29.0.v20230903-1000"/>
</location>
<location includeAllPlatforms="true" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
<repository location="https://download.eclipse.org/tools/orbit/downloads/drops/I20230403150144/repository"/>
<unit id="com.sun.jna" version="5.12.1.v20221103-2317"/>
<unit id="com.sun.jna.platform" version="5.12.1.v20221103-2317"/>
<unit id="javax.annotation" version="1.3.5.v20221203-1659"/>
<unit id="javax.inject" version="1.0.0.v20220405-0441"/>
<unit id="org.apache.commons.io" version="2.8.0.v20210415-0900"/>
<unit id="org.apache.commons.logging" version="1.2.0.v20180409-1502"/>
</location>
<location includeAllPlatforms="true" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
<repository location="http://download.eclipse.org/tools/orbit/downloads/drops/R20150519210750/repository/"/>
<unit id="org.apache.commons.jxpath" version="1.3.0.v200911051830"/>
</location>
</locations>
</target>
这似乎是 Eclipse 3.31 中的一个错误。使用 eclipse 4.32 导出产品再次有效。