java - 如何从 eclipse/osgi 应用程序中包含对 jar 文件的依赖?

标签 java eclipse plugins eclipse-plugin osgi

我创建了一个 Eclipse 4 应用程序,我需要一个 jar 提供一个功能作为我的应用程序的一部分(这可以是任何东西,例如 log4j 以使其变得微不足道)。< br/> 我将 jar 添加为项目类路径的一部分(Right Click->Configure Build Path),但在运行时我的服务因 ClassNotFound 错误而失败(我猜是来自 OSGI?)。
无论如何搜索结果,至少据我所知,我应该将 jar 添加为另一个 Plugin 的一部分,并创建从我的应用程序/服务到这个新插件的依赖关系。
IE。我从现有的 JAR 文件中创建了一个插件项目
这次设置成功了。
所以如果我理解这一点,在为 Eclipse/OSGi 开发时我们不应该直接在类路径中添加 jars 而是通过插件添加它们(为什么?)。
问题:如果到目前为止我是正确的,那么在开发项目时包含jars的标准做法是什么?
从现有的 JAR 文件定义/创建一个插件项目,并添加所有所需的第三方库,根据需要有不同的插件项目jar 可能是其他东西???
对不起,如果我的术语不准确。我是 OSGi 和 Eclipse 编程的新手

注意:在谈论 jars 时,我并不是指其他 OSGi 服务。我指的是使用应用程序的许多部分都需要的现成的、可靠的第三方库的规范。例如。 log4j 或 xml 解析库或 apache commons

最佳答案

对于运行时,始终是 Manifest 和那里的 header 控制您的包类路径中的内容。可以通过三种方式访问​​ jar:

  1. 导入包 header 。这是推荐的方式。您为每个需要的包定义一个导入。您要访问的 jar 必须作为 bundle 部署在运行时中。它还需要导出所有需要的包。

  2. 要求捆绑。这是访问包的另一种方式。您定义所需的包的 ID 并查看它导出的所有包。由于 Require-Bundle 将您与其他 bundle 更紧密地绑定(bind)在一起,因此应该首选 Import-Package 方式。

  3. 捆绑类路径。这允许将 jar 添加到您嵌入到自己的包中的类路径。当其他方法不起作用时,这应该只是最后的手段。将此方法与其他方法混合使用时,您可能会遇到严重的类加载问题。

您可以在 Maven Central 中找到许多预构建的包。现在许多 jar 已经包含 OSGi list 。对于不是这样的情况,许多 jar 被 servicemix 重新打包为包。请参阅 groupId:org.apache.servicemix.bundles。还有 spring bundle 存储库,您可以在其中找到更多信息。

下面我列出了一些您可能想要阅读的资源:

http://www.aqute.biz/Blog/2007-02-19

http://wiki.osgi.org/wiki/Import-Package

http://wiki.osgi.org/wiki/Require-Bundle

http://www.vogella.com/blog/2009/03/27/required-bundle-import-package/

关于java - 如何从 eclipse/osgi 应用程序中包含对 jar 文件的依赖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12569474/

相关文章:

java - 将 Azure AD 身份验证与 AWS 中托管的现有基于 Java 的 Web 应用程序集成的可能选项?

java - Eclipse 编辑器显示一些不同的字符作为背景图案。如何禁用?

c++ - 在 C++ Eclipse 中未定义对(错误)的引用,但在 Visual Studio 2015 中工作

python - 动态添加路线到 Pyramid

javascript - 在屏幕调整大小/移动设备上 chop 文本并能够扩展文本

java - Intent 在 Android 应用程序中隐藏 adview

java - 如何知道我们的视频被网站上的任何人下载

java - 字符编码问题?

eclipse - 无法安装 Darkest Dark 主题 MyEclipse

javascript - jQuery scrollTop 如果 URL 有散列