我继承了一个用 Java 编写的 RCP 框架 (eclipse) 应用程序。
该代码带有完整的构建系统(maven)和pom文件,一切似乎都在构建。
但是,最终的应用程序 exe 无法运行。我收到一个带有错误的弹出窗口,然后是一个指向描述许多错误的日志文件的链接。问题是,我是 RCP 的新手,我几乎不知道 OSGI 是什么,而且我不了解所有的 maven。所以我很难弄清楚问题是什么,甚至从哪里开始。
日志文件开始是这样的:
!ENTRY org.eclipse.osgi 4 0 2013-10-14 13:38:14.717 !MESSAGE 应用程序错误 !STACK 1 java.lang.RuntimeException: 找不到应用程序“com.company.prod.app.rcp.application”在注册表中。可用的应用程序有:org.eclipse.equinox.app.error、org.eclipse.help.base.infocenterApplication、org.eclipse.help.base.helpApplication、org.eclipse.help.base.indexTool。在 org.eclipse.equinox.internal.app.EclipseAppContainer.startDefaultApp(EclipseAppContainer.java:242) 在 org.eclipse.equinox.internal.app.MainApplicationLauncher.run(MainApplicationLauncher.java:29) 在 org.eclipse.core.runtime .internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) 在 org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) 在 org.eclipse.core。
!ENTRY org.eclipse.osgi 2 0 2013-10-14 13:38:14.751 !MESSAGE 一个或多个捆绑包未解决,因为以下根约束未解决:!SUBENTRY 1 org.eclipse.osgi 2 0 2013-10 -14 13:38:14.751 !MESSAGE Bundle update@plugins/com.company.prod.app.data_2.0.5-SNAPSHOT.jar 未解决。!SUBENTRY 2 com.company.prod.app.data 2 0 2013-10-14 13:38:14.751 !MESSAGE 缺少导入的包 microsoft.sql_0.0.0。
!ENTRY org.eclipse.osgi 2 0 2013-10-14 13:38:14.778 !MESSAGE 以下是未解决的捆绑包的完整列表,如果存在根本原因,请参阅先前的日志条目:
然后它继续列出应用程序中的每个包,列为版本 0.0.0。我假设版本号与问题有关,因为它们当然都没有版本 0.0.0。
搜索所有 pom.xml 文件不会将单个依赖项列为版本 0.0.0。
我不明白被称为“根本”原因的 microsoft.sql_0.0.0 导入包从何而来。我知道代码使用 microsoft.sqlserver。它被导入到一个 java 文件中,如下所示:
import com.microsoft.sqlserver.jdbc.SQLServerException;
并且包含该导入语句的包将 microsoft.sqlserver 列为依赖项,如下所示:
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>sqljdbc</artifactId>
<version>4.0</version>
</dependency>
此外,在某处有一个“捆绑”(?)导出它,如下所示:
<Export-Package>
org.hsqldb.*,
com.microsoft.sqlserver.*
</Export-Package>
所以,对我来说,它似乎被正确地导出和导入了。但我不明白 maven 有什么好处(或者它是 osgi 还是 rcp 错误?甚至不确定)。
还。我的 maven 存储库中有 sqlserver.sqljdbc,位于:
.m2\repository\com\microsoft\sqlserver\sqljdbc\4.0
任何有关如何尝试和解决此问题的提示将不胜感激。