我一直在导出 Eclipse 产品,并在运行二进制启动器时遇到“### 可执行启动器无法找到其配套共享库”。
这个问题是在使用标准 Eclipse 产品导出向导时首次遇到的。我确实检查了本机工件选项。 (是的,我知道,它不受支持......然后告诉 Eclipse 基金会将其从系统中删除)。之前解决了这个导出问题后,我开始学习使用第谷构建我的产品。
然后令我恼火的是,在成功获得构建和明显完整的导出后,我在开始时收到相同的共享对象消息。
我花了几周的时间试图从 Eclipse 导出有效的产品,但现在我对此已经失去了耐心。显然这个问题不是构建系统的问题(似乎是 P2 导演问题?或者可能与我指定插件和功能的方式有关 - 我根本不使用功能)。我对下一步该尝试什么感到束手无策。
Linux GTK x86 上的 Eclipse4 23-12(之前的导出工作在 23-09,相同的 .project 文件,但更新了 .target)。如果有帮助的话,很高兴发布我的 POM 文件。
项目构建由
定义 parent-project (ORACBuild)
pom.xml
|
+-au.csiro.orac: E4Application plug-in with pom.xml
+-..
+-.. Multiple other plugins (all with own pom.xml)
+-..
|
+-au.csiro.product
|
+ LABX.product
+ pom.xml
顶级 pom(父级、公共):
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>au.csiro.orac</groupId>
<artifactId>releng</artifactId>
<version>24.04.1-TEST</version>
<packaging>pom</packaging>
<properties>
<tycho.version>4.0.5</tycho.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-p2-director-plugin</artifactId>
<version>${tycho.version}</version>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-maven-plugin</artifactId>
<version>${tycho.version}</version>
<extensions>true</extensions>
</plugin>
<!--Enable the replacement of the SNAPSHOT version in the final product configuration-->
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-packaging-plugin</artifactId>
<version>${tycho.version}</version>
<executions>
<execution>
<phase>package</phase>
<id>package-feature</id>
<configuration>
<finalName>
${project.artifactId}_${unqualifiedVersion}.${buildQualifier}</finalName>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>target-platform-configuration</artifactId>
<version>${tycho.version}</version>
<configuration>
<!-- Optional set the Java version you are using-->
<executionEnvironment>JavaSE-17</executionEnvironment>
<target>
<file>LABX.target</file>
<!--<file>../target-platform/target-platform.target</file>-->
</target>
<environments>
<environment>
<os>linux</os>
<ws>gtk</ws>
<arch>x86_64</arch>
</environment>
<environment>
<os>win32</os>
<ws>win32</ws>
<arch>x86_64</arch>
</environment>
<environment>
<os>macosx</os>
<ws>cocoa</ws>
<arch>x86_64</arch>
</environment>
</environments>
</configuration>
</plugin>
</plugins>
</build>
<modules>
<module>au.csiro.orac.one</module>
</modules>
</project>
产品项目POM:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>au.csiro.orac.product</groupId>
<artifactId>au.csiro.orac.product</artifactId>
<packaging>eclipse-repository</packaging>
<name>ORAC1</name>
<parent>
<groupId>ORACBuild</groupId>
<artifactId>ORACBuild</artifactId>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../ORACBuild</relativePath>
</parent>
<build>
<plugins>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-p2-director-plugin</artifactId>
<version>4.0.5</version>
<executions>
<execution>
<!-- install the product using the p2 director -->
<id>materialize-products</id>
<goals>
<goal>materialize-products</goal>
</goals>
</execution>
<execution>
<id>archive-products</id>
<goals>
<goal>archive-products</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
还有 E4Application 插件 pom:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>au.csiro.orac</groupId>
<artifactId>au.csiro.orac.one</artifactId>
<packaging>eclipse-plugin</packaging>
<name>au.csiro.orac.one</name>
<parent>
<groupId>ORACBuild</groupId>
<artifactId>ORACBuild</artifactId>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../ORACBuild</relativePath>
</parent>
</project>
我解压生成的 GTK 二进制文件,当它运行时,会出现一个对话框,其中显示消息“ORAC 可执行启动程序无法找到其配套共享库”。 (虽然该项目也定义了WIN和OSX目标,但我没有尝试运行它们)
我将添加以下观察结果:
该系统的最后一次成功构建使用 Eclipse 23.06,并通过产品导出完成。在此导出中,插件文件夹包含“org.eclipse.equinox.launcher.gtk.linux.x86_64_1.2.700.v20221108-1024/eclipse_11801.so”和configuration/org.eclipse.osgi中的四个“libswt*.so”文件.
此产品是使用 Eclipse 2312 构建的。无论使用导出向导还是使用 Tycho P2 导出器导出,它都不包含任何类型的“.so”(或 DLL 或 DYLIB)文件。
在发布对原始问题的编辑时,我突然想到检查构建是否在 23-09 中有效,但在 23-12 中无效。 23-12 构建在两个单独的 Eclipse 安装上失败。确认这一点后,我安装了 Eclipse 24-03 的全新副本并运行构建。令我松了一口气的是,该构建没有出现丢失共享对象的问题。
尽我所能进行测试,看来 23-12 版本的 Eclipse 和我所拥有的特定构建定义存在问题。我找不到任何相关的错误报告,并且愿意接受关于为什么它不起作用的建议。