- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个第三方 jar,没有源,用于连接到专有数据库系统。我相信这个 jar 实际上是一个 Eclipse 插件;它取自该系统基于 Eclipse 的编辑器的 lib 文件夹之一。
无论如何,我正在尝试使用 Netbeans 7.4 和 Karaf 3.0.1 开发一个公开此 jar 功能的包。仅仅尝试将 jar 安装到 Karaf 中是行不通的 - 如果我将其放入部署文件夹中,它甚至不会出现在列表中,就像它无法将其识别为 OSGI 包一样。我在 Netbeans 中创建了一个新的 OSGI Maven 包,将 jar 添加为依赖项,并尝试了各种着色方式,包括在 Bundle-ClassPath
、Export-Package
中,使用没有运气。有一次我以为我可以正常工作,但 Karaf 提示需要一些 Eclipse 要求。
我做了更多挖掘,解压了 jar,第 3 方 jar 的 list 如下:
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@root()> feature:install custom_deps
Error executing command: Could not start bundle mvn:org.eclipse/osgi/3.5.0.v2009
0520 in feature(s) custom_deps-1.0: Activator start error in bundle org.eclips
e.osgi [256].
我认为这可能与春分与菲利克斯有关?我只是使用默认的 Karaf 设置并使用内置的 Netbeans Maven 项目创建 bundle ,并且对 OSGI 世界还比较陌生。在大多数情况下,我可以启动并运行 bundle ,并为应用程序构建一个基本集合,但是这个 bundle 取决于是否能够使用这个库,而我正在努力寻找一种让它工作的方法。我想知道是否有一种方法可以解决 jar 的所有链接依赖项,或者以某种方式删除依赖于 eclipse 的任何内容?我想知道这是否只是与插件相关的部分,对于我正在寻找的连接来说不是必需的。
感谢您的任何想法。
编辑:添加有关第 3 方 jar 的更多信息
该 jar 是由供应商提供的,但来自现已不复存在的供应商。我不确定是否可以提供供应商详细信息,因此我将在此处隐藏具体的公司信息。因此该 jar 被命名为“com.bigcompany.product.productbeans_4.3.1.jar”。 jar 的完整 list 如下所示:
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
在 Karaf 中切换到 Equinox 相对轻松,但是将 jar 放入 Karaf 中它仍然没有出现在列表中。我尝试解压缩 jar,修改 list 以删除 Require-Bundle 和 Eclipse-Autostart 行,重新打包并尝试安装它 - 那时它出现了,但我想要这个库的包仍然提示缺少需求 'com. bigcompany.product.productbeans'。
从那里,我尝试重新部署尝试导入第 3 方软件包的 bundle ,当我尝试在上面安装我的功能文件时, 提示缺少约束 - 是否有必需的顺序功能文件中的 bundle ?
我认为最终我希望的是有一种权威的方法可以将jar(或者它包含的.class文件?)嵌入或包含到需要它们的包中,并让它正常工作?我已经尝试过 Embed-Dependency、Bundle-Classpath (尽管我不确定我的语法或位置是否正确?),使用 Maven Shade 插件,或者我到达我的包说它缺少第 3 方包的位置,或者如果它没有给出,则表示找不到 Eclipse 依赖项。如果我有一个非 OSGI 项目,则 Maven 依赖项不会列出或包含任何类型的 Eclipse 相关依赖项。如果需要,我可以包含我的 POM 片段或其他内容。
最佳答案
基本上,Require-Bundle 表示它需要 equinox 包。 Karaf 标准使用 Apache felix 作为 OSGi 运行时。由于 equinox 也是一个运行时,因此您不能简单地将其安装在 felix 中。
相反,您只需将 karaf 切换为使用春分而不是 felix。
编辑etc/config.properties并设置karaf.framework=春分
然后尝试再次部署您的 bundle (首先不添加其他依赖项)。
关于java - 在 Karaf 中将第 3 方 jar 作为 OSGI 包获取时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24689381/
我是 apache karaf 的新手。 当我通过在 Windows 计算机上执行 bat 文件来启动 apache karaf 时。它一直给我以下错误 C:\karaf\apache-karaf-4
在 feature.xml(Apache Karaf 配置机制)标签中 feature有一个 dependency属性。这个属性有什么作用? 例如: custom-feature-name 我在哪里可
当我使用 dev:create-dump 时,转储中的线程堆栈不完整。是否可以将 Karaf 配置为: 转储全部堆栈? 检测死锁? 最佳答案 dev:create-dump : 创建一个带有信息的存档
如何从 karaf> 提示符为特定包设置不同的日志级别? log:set TRACE为所有人设置 TRACE 级别的日志记录。我想要 INFO/DEBUG 用于特定包的 ROOT 和 TRACE 级别
我正在尝试使用 Karaf 来托管 REST 服务。我使用的是 4.0.0 M2 版本(因为我的原型(prototype)还处于早期阶段)。根据我的拼凑,为了托管 REST 服务,我可以使用 Kara
不幸的是,称为 Karaf 的 OSGi 容器实现的文档很差。概念被擦掉,术语之间的关系没有建立。 我在阅读了 Karaf 开发人员撰写的文本后得出的结论(我猜?): 当 OSGi 容器中没有其他包(
我正在使用 karaf 服务器来部署和安装功能。我安装了一个功能“测试功能”,然后我从存储库中删除了它。在激活其他一些功能时,它给了我一个异常(exception)—— org.osgi.servic
Karaf v2.3.0,org.apache.aries.blueprint.core:1.0.1,在从另一个包导入的服务上调用接口(interface)方法时抛出 ClassCastExcepti
我正在学习 Karaf,按照本教程:https://github.com/cschneider/Karaf-Tutorial/tree/master/tasklist 我按照要求构建了它。然后我尝试像
我目前正在为 karaf 开发 bundle 并有一些问题... 我写了一个基于 cxf 的 bundle/webservice,我尝试在 karaf 中部署它,但它无法启动那个 bundle,因为它
如何在Karaf中设置虚拟主机? Karaf 嵌入了 Jetty,因此我使用以下内容制作了 context.xml 并将其放入 /etc 文件夹中: / /webapps/testWAB_w
我正在学习 Karaf,按照本教程:https://github.com/cschneider/Karaf-Tutorial/tree/master/tasklist 我按照要求构建了它。然后我尝试像
mvn:org.antlr/antlr4-runtime/4.5.3 wrap:mvn:org.antlr/antlr4-runtime/4.0 我有两个功能正在使用antlr
如何在 apache karaf 中重复之前的命令?我尝试了向上和向下箭头,但没有收到之前的命令。 最佳答案 如果您阅读了 Apache Karaf 的手册,则可以使用默认箭头在命令历史记录中导航;
我有一个关于 karaf 和功能加载的问题。我有一个 kar 文件,其中包含我的应用程序的所有 bundle 。它在PROD环境上发布。它是基于版本 4.0.4 的自定义构建离线 Karaf - 并且
我已经尝试过此 link 中的组件工厂示例。接口(interface): package com.java.examplefactoryservice; public interface Exampl
我正在运行 Karaf,我在 persistence.xml 中有一个数据源(指向 SQL Server DB),并且我正在尝试执行插入查询。 但是我遇到了这个异常: javax.persistenc
我决定在 OSGI 和 Karaf 之上构建一个应用程序——我真的很喜欢这些东西。但是,我在本地开发机器上的日常部署有点挣扎。我的意思是.. 我做了一个改变,然后我想在我本地的 Karaf 实例上测试
我对 Apache Karaf 到底是什么有点困惑。 您能否说 Apache Karaf 包括以下内容: Apache Felix(OSGi 4.2 框架的实现) Apache Aries(Bluep
是否有人设法在Apache Karaf上运行Grails 3应用程序? 有一个关于如何使用Grails 2进行操作的教程,但它似乎已经过时且容易出错。 我将不胜感激,即使它是高级要点,也能提供任何帮助
我是一名优秀的程序员,十分优秀!