Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Karaf中将第三方jar作为OSGI包获取时遇到问题_Java_Osgi_Karaf - Fatal编程技术网

Java 在Karaf中将第三方jar作为OSGI包获取时遇到问题

Java 在Karaf中将第三方jar作为OSGI包获取时遇到问题,java,osgi,karaf,Java,Osgi,Karaf,我有一个第三方jar,没有源代码,用于连接专有数据库系统。我相信jar实际上是一个Eclipse插件;它取自该系统基于Eclipse的编辑器的一个lib文件夹 无论如何,我正在尝试开发一个包,使用Netbeans 7.4和Karaf 3.0.1公开这个jar的功能。只是尝试将jar安装到Karaf中是不起作用的——如果我将它放到deploy文件夹中,它甚至不会出现在列表中,就像它不能识别它是一个OSGI包一样。我在Netbeans中创建了一个新的OSGI Maven包,添加了jar作为依赖项,并

我有一个第三方jar,没有源代码,用于连接专有数据库系统。我相信jar实际上是一个Eclipse插件;它取自该系统基于Eclipse的编辑器的一个lib文件夹

无论如何,我正在尝试开发一个包,使用Netbeans 7.4和Karaf 3.0.1公开这个jar的功能。只是尝试将jar安装到Karaf中是不起作用的——如果我将它放到deploy文件夹中,它甚至不会出现在列表中,就像它不能识别它是一个OSGI包一样。我在Netbeans中创建了一个新的OSGI Maven包,添加了jar作为依赖项,并尝试了所有方式的着色,包括
包类路径
导出包
,但运气不佳。在某一点上,我认为它可以工作,但Karaf抱怨需要一些Eclipse需求

我做了更多的挖掘,解压了罐子,第三方罐子的清单上有:

Require-Bundle: org.eclipse.core.runtime
于是,我开始着手解决这些依赖关系。根据maven页面,我整理了以下features.xml文件:

<features xmlns="http://karaf.apache.org/xmlns/features/v1.0.0">
    <feature name='custom_deps' version='1.0'>  
        <bundle>mvn:org.eclipse.equinox/log/1.0.100-v20070226</bundle>
        <bundle>mvn:org.eclipse/osgi/3.5.0.v20090520</bundle>
        <bundle>mvn:org.eclipse.core/contenttype/3.2.100-v20070319</bundle>
        <bundle>mvn:org.eclipse.core/jobs/3.3.0-v20070423</bundle>
        <bundle>mvn:org.eclipse.core.runtime.compatibility/auth/3.2.100-v20070502</bundle>
        <bundle>mvn:org.eclipse.equinox/app/1.3.100-v20130327-1442</bundle>
        <bundle>mvn:org.eclipse.equinox/common/3.6.200-v20130402-1505</bundle>
        <bundle>mvn:org.eclipse.equinox/preferences/3.5.100-v20130422-1538</bundle>
        <bundle>mvn:org.eclipse.equinox/registry/3.5.301-v20130717-1549</bundle>    
        <bundle>mvn:org.eclipse.core/runtime/3.3.100-v20070530</bundle>
    </feature>
</features>
我想这可能和春分对费利克斯有关?我只是使用默认的Karaf设置,并使用内置的Netbeans Maven项目创建捆绑包,对于OSGI来说,我还是比较新的。在大多数情况下,我都可以安装并运行捆绑包,并为一个应用程序收集了一个基本的集合,但这个捆绑包取决于是否能够使用这个库,我正在努力找到一种方法让它工作。我想知道是否有一种方法可以解决jar的所有链接依赖项,或者以某种方式去除依赖于eclipse的任何内容?我想知道这是否只是插件相关的部分,而不是我所寻找的连接所必需的

谢谢你的建议

编辑:添加有关第三方jar的更多信息

jar是供应商提供的,但来自一个现已不存在的供应商。我不确定是否可以提供供应商详细信息,因此我将在此处隐藏特定的公司信息。因此,jar被命名为“com.bigcompany.product.productbeans\u 4.3.1.jar”。jar的完整清单如下所示:

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Productbeans Plug-in
Bundle-SymbolicName: com.bigcompany.product.productbeans
Bundle-Version: 4.3.1
Bundle-Activator: com.bigcompany.product.productbeans.ProductbeansPlugin
Bundle-Vendor: BIGCOMPANY
Bundle-Localization: plugin
Require-Bundle: org.eclipse.core.runtime
Eclipse-AutoStart: true
Export-Package: com.bigcompany.product.productbeans
在卡拉夫切换到Equinox相对来说没有什么痛苦,但是把罐子扔到卡拉夫仍然没有出现在列表中。我尝试解压jar,修改清单以删除Require Bundle和Eclipse Autostart行,重新打包并尝试安装它-在这一点上它出现了,但我想要这个库的Bundle仍然抱怨缺少需求'com.bigcompany.product.productbeans'

从那里我尝试重新部署我的捆绑包,尝试导入第三方软件包,当我尝试在上面安装我的功能文件时,它抱怨缺少约束-功能文件中是否有捆绑包的必需顺序


我想我最终希望的是,有没有一种权威的方法可以将一个jar(或者它包含.class文件?)嵌入或包含到一个需要它们的包中,并让它正常工作?我尝试过使用maven shade插件嵌入依赖项,捆绑类路径(尽管我不确定语法或位置是否正确?),或者我的捆绑包说它缺少第三方包,或者如果它没有给出,它说它找不到eclipse依赖项。如果我有一个非OSGI项目,maven依赖项不会列出或包含任何类型的eclipse相关依赖项。如果需要,我可以包括POM的片段或其他内容

基本上Require Bundle表示它需要equinox Bundle。Karaf标准使用ApacheFelix作为OSGi运行时。由于equinox也是一个运行时,您不能简单地在felix中安装它

取而代之的是,你只需将你的卡拉夫换成equinox而不是felix

编辑etc/config.properties并设置 karaf.framework=equinox


然后再次尝试部署您的捆绑包(首先不需要附加依赖项)。

谢谢!我已经更新了我的帖子,上面有更多的信息。虽然我不得不重新安装一些功能(cxf http),但对Equinox的更改相对来说比较轻松。但我仍然在运行我的捆绑包,找不到第三方资源。在这一点上,我甚至不需要第三方jar单独提供;我的bundle是用来包装它的,所以如果有任何方法可以将依赖jar完全嵌入到bundle中,那将是最好的…我想?再次感谢你的帮助!如果您使用maven bundle插件创建自己的bundle,那么添加依赖项是非常简单的。只需将要嵌入包的包添加到“Private Package:”配置中。maven bundle插件将把这些类添加到您自己的bundle jar中。
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Productbeans Plug-in
Bundle-SymbolicName: com.bigcompany.product.productbeans
Bundle-Version: 4.3.1
Bundle-Activator: com.bigcompany.product.productbeans.ProductbeansPlugin
Bundle-Vendor: BIGCOMPANY
Bundle-Localization: plugin
Require-Bundle: org.eclipse.core.runtime
Eclipse-AutoStart: true
Export-Package: com.bigcompany.product.productbeans