在 Virgo-Server Import-Package 中,由于缺少捆绑约束中的约束,无法 resolved.Caused

In Virgo-Server Import-Package could not be resolved.Caused by missing constraint in bundle constraint

我是 Java Spring 框架的新手。我已经创建了一个自定义包并想在 virgo server.But 中部署 jar/bundle 我无法成功地这样做。

这是我的 template.mf 文件屏幕,我在其中添加了依赖项

这是我的 java 文件,我在其中导入了软件包

这是原始 jar 文件屏幕

这是我的pom.xml,我在其中添加了依赖项

但是一旦在 maven 构建之后部署 jar 文件(不会抛出错误),我就会不断收到错误

Caused by:  org.eclipse.virgo.kernel.osgi.framework.UnableToSatisfyBundleDependenciesException: Unable to satisfy dependencies of bundle 'com.xyz.costfromsap.application' at version '1.4.0.RELEASE': Cannot resolve: com.xyz.costfromsap.application
Resolver report:
    An Import-Package could not be resolved. Caused by missing constraint in bundle <com.xyz.costfromsap.application_1.4.0.RELEASE>
         constraint: <Import-Package: com.sap.conn.jco; version="[3.0.0,4.0.0)">

这是我将其转换为 OSGI 捆绑器后更新的依赖 jar 文件

我也更新了 template.mfpom.xml

但问题依然存在。

问题是 sapjco3.jar 不是 OSGi 包。它只是一个普通的旧 Jar 文件。您需要将其转换为 OSGi 包。在 Eclipse 或任何 Eclipse 变体中,请遵循以下步骤。您只能在捆绑 MANIFEST.MF

中的 Export-Package 中列出的软件包上使用 Import-Package

新建 -> 项目

来自现有存档的插件 -> 添加外部并加载您的 Jar,然后单击下一步。

输入名称和 Select OSGi 框架单选按钮并单击完成。

现在您将创建一个新项目。转到 MANIFEST.MF 文件和运行时选项卡和导出包,单击添加按钮并 select 列出所有包。

最后,您的 MANIFEST.MF 应该 Export-Package: 包含所有软件包,如下所示。

现在右键单击该项目并单击导出和 Select Java -> Jar 文件。

Select 个要导出的文件。忽略 Eclipse 特定文件和 pom 文件。

单击下一步,直到您看到项目中的 Manifest Selection 和 Select Use existing manifest 选项和 select the MANIFEST.MF in META-INF。

单击完成并在您的 Virgo 服务器中使用该 Jar。将它放在 VIRGO_HOME/repository/usr.