问题标签 [osgi-fragment]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
jsp - 修补/覆盖 OSGi 包中 /resources 目录中的 .jsp 文件
假设我有一个包含多个类文件、jsp、css 文件等的 osgi 包(xyz.jar)。我需要使用 osgi 片段包和/或 require-bunlde 修补此包中的一个 .jsp 文件(比如 admin.jsp)。
我所做的只是在正确的目录结构中创建了一个带有 .jsp 文件的修补版本的补丁包。要将它附加到主包,我已经为 xyz.jar 创建了一个片段包,并根据需要标记了补丁包(require-bundle)。
以前我使用同样的方法来修补 osgi 包中的 .class 文件。但是,.jsp 文件似乎没有得到修补。
我想知道我在这里做错了什么。有没有更好的方法来修补驻留在 osgi 包中的单个 .jsp 文件?
java - 使用 OSGI 包进行反射,用于依赖 jar
我写了一个框架(我们称之为 A),它依赖于 jdbc 驱动程序和数据源,并使用反射加载类。
它使用 3 个带参数的 Class.Forname 和 Thread.currentThread().getContextClassLoader()
现在,我想在 OSGI 包中使用这个框架 A.jar。我为 A.jar 生成了 Manifest 文件,正确添加了导入和导出。
导入和导出不起作用,因为我正在使用反射加载类,所以我使用了 DynamicImport-Package。
但是,只有当我在使用 A.jar 的 Bundle 中包含 DynamicImport-Package 时它才有效,如果我在 A.jar 中包含 DynamicImport-Package 它不起作用
我不能让每个使用 A.jar 更改其清单文件并包含 DynamicImport 的包。
你能帮我解决这个问题吗?
PS:我无法更改为静态加载类。我通过省略某些细节来简化问题,例如 A.jar 实际上使用 Oracle UCP,它使用反射来加载数据源。
java - OSGi 片段是否应该将包导出到它们的主机?
我注意到我有一个片段使用了一个Export-Package
用于贡献给它的主机的包的指令:
此捆绑包为主机中的 org.eclipse.jetty.osgi.boot.utils 包提供了一些额外的类。
理想情况下,我认为我应该尽可能保持包的私密性,但是这种情况呢?我的其余代码都不需要org.eclipse.jetty.osgi.boot.utils
.
maven - 如何使用片段插件修补 Eclipse 插件并将其部署到我的 Eclipse 产品中?
我正在尝试使用片段插件将补丁应用于现有插件,如下所述:
使用 Fragments 修补插件的步骤 - Eclipsepedia
主机插件的补丁涉及用更新的类文件替换单个类文件。但是我在修改主机包清单设置步骤 5) 到 11)部分中没有得到这个概念。在这里它指导您修改主机插件。我认为整个想法是您不必触摸主机插件 - 它是您部署的添加补丁的片段?
我的产品由 eclipse 平台和 org.eclipse.cdt 功能以及我自己的使用 cdt 的插件组成。这是我要修补的 org.eclipse.cdt.core 插件。
我已经按照 eclipse wiki 中的步骤创建了我的片段项目,其中包含我想在主机插件中修补的包和类。我已经在 Maven 中构建了它,当我运行这个产品时,我看到我的片段插件处于活动状态,但它包含的类没有被调用;原来的主机插件类是。
我猜问题是修改后的主机插件不在我部署的产品中。片段指南中没有包含有关部署主机插件的建议的任何步骤,我不确定如何/为什么需要它。
(我过去曾成功使用过功能补丁来处理这类事情,但只使用 PDE 创建 - 我无法在 maven 下构建我的功能补丁 - 这就是为什么我正在探索使用片段来查看如果我能让他们在 Maven 下构建。)
更新*:我使用 Maven Tycho 的 Tycho 插件创建我的构建- 使用 maven 构建 Eclipse 插件。
感谢您链接到“OSGi Core Release 5 Specification”。那是有用的阅读。
因此,如果我的理解是正确的,如果主机插件已经“准备好”用片段修补,片段只能将其类覆盖在主机插件上。这涉及修改主机插件的清单。具体来说: 1. 添加一个新库并将其移至“。”上方。包裹。从构建属性中删除此库;该库只是一个参考,不应由主机插件创建。+ 添加 Eclipse-ExtensibleAPI: true 到 manifest.mf 文件 + 增加版本号。
就我而言,似乎如果我想使用片段修补 org.eclipse.cdt.core 插件,我必须提供准备好的 org.eclipse.cdt.core 插件版本以及我的片段插件。
*:不确定回答礼仪;没有足够的声誉做很多事情。评论框只接受少量字符。
osgi - OSGi 中的 JPA - 单一模式,但多个包中的实体
给定一个数据库模式和两个(或更多)包。
问题:是否可以跨包分布 JPA 实体(对于单个模式)?
(我最初是在考虑片段包,但想知道是否还有其他可能性)
junit - 在 Eclipse RCP 项目中运行纯 JUnit + Mockito 时出现 SecurityException
我有一个带有多个插件的 Eclipse RCP 项目。我正在编写普通的 JUnit 测试(不依赖于 Eclipse/UI)作为被测插件的单独片段。
当使用 Mockito 并尝试从另一个插件(正确导出;我可以在我的代码中使用该接口)模拟接口时,我得到一个与类签名相关的 SecurityException:
当我将测试作为“JUnit 插件测试”运行时,即使用 OSGi 环境,一切都按预期工作。但由于速度的原因,我想使用普通的 JUnit 执行;在被测类中,我不需要 OSGi 环境。
有人知道这样做的方法吗?
osgi - Apache tomcat catalina springsource 捆绑包在 Equinox OSGi 容器上未解决
我有一个 java 应用程序,我在其中启动 Equinox OSGi 容器(版本 3.10.1.v20140909-1633)并加载 apache catalina springsource 包com.springsource.org.apache.catalina.springsource_6.0.20.S2-r5956
和其他依赖包。以下是我的 config.ini 文件。
当我连接到 OSGi 控制台并使用命令列出所有捆绑包时,ss
我看到以下结果
这里的包com.springsource.org.apache.jasper.springsource_6.0.20.S2-r5956
和 com.springsource.org.apache.coyote.springsource_6.0.20.S2-r5956
是片段包,其父包是com.springsource.org.apache.catalina.springsource_6.0.20.S2-r5956
.
我们可以看到所有这 3 个捆绑包都已安装。当我尝试com.springsource.org.apache.catalina.springsource_6.0.20.S2-r5956
使用命令手动启动捆绑包时start 73
,我看到以下异常。
但是当我查看 coyote 和 Jasper 捆绑包的导入和导出包时,它是正确的。事实上,它们取自 springsource 存储库。
我没有得到 bundle 缺少的约束com.springsource.org.apache.catalina.springsource_6.0.20.S2-r5956
。
这里将首先解决哪个捆绑包?它是父包还是片段?如何解决此问题以确保所有捆绑包都已解决并成功启动捆绑包com.springsource.org.apache.catalina.springsource_6.0.20.S2-r5956
java - 在插件上使用片段
在我的项目中,我可以看到所有 JUnit 测试用例都是用 eclipse 片段而不是 eclipse 插件编写的。我们确实将每个测试类作为 JUnit 插件运行。我对这些概念不是很清楚。我对这个概念比较陌生。
我只是用谷歌搜索以获得关于使用片段而不是插件进行测试的更好的知识。我的理解是,片段和主机插件共享同一个类加载器。如果我的理解有误,请纠正我。
但是我不明白下面一行的含义。
如果我们在 eclipse 插件中创建测试,测试类将由单独的类加载器加载,因此无法访问被测类的非公共方法。
为什么它无法访问非公共方法?任何人都可以通过简单的例子帮助我理解上述含义吗?
java - eclipse4 RCP 片段“无法从包中加载类”
我目前尝试将 Eclipse 3 RCP 应用程序迁移到 e4。该项目基于一个主插件项目和几个片段项目。我正在使用 Eclipse Mars 进行开发。以下描述基于我为此创建的示例项目。
主应用程序提供了一个简单的菜单,其中包含一些已处理的菜单项。该片段应为此添加更多菜单项。但是我得到一个异常告诉我,分配的处理程序类无法加载:
这两个项目的结构或多或少如下所示。
主要应用程序(eclipse PlugIn-Project):
- 元信息/清单.MF
- 应用程序.e4xmi
- 插件.xml
MANIFEST.MF 内容:
片段(eclipse Fragment-Project):
- de/fragment/Handler.java
- 元信息/清单.MF
- 片段.e4xmi
- 片段.xml
MANIFEST.MF 内容:
fragment.e4xmi 本身被正确评估。我通过从菜单项中删除处理程序来检查这一点,然后将图标添加到 gui。
老实说,我不知道是什么导致了这个异常。你们中有人有想法可以帮助我吗?
提前致谢
eclipse - 尝试使用自定义 vm arg 在 Eclipse 中导出 OSGi 片段时出现“不满意的本机代码过滤器”错误
这里似乎只有另一个这种性质的问题,但该答案提出的解决方案对我来说并不有效。我使用 Spring Tool Suite(本质上是 Kepler 4.3.2 SR2)作为我的 IDE 来开发一个 OSGi 片段,其中包含一些本机 C++ 代码的最新版本。这些片段的存在是为了允许在不同环境中存在不同版本的软件,这些本地代码旨在与之集成。
但是我无法导出这个片段,显然是因为我们用来表示这个版本号的自定义 vm arg。
清单看起来像这样:
错误说:
处理来自功能 org.eclipse.pde.container.feature 的包含:捆绑 com.ourcompany.oursoftwarepackage.xyz.win64xyz4127_8.6.2.qualifier 无法解析。:不满意的本机代码过滤器:xyzintegration.dll;选择过滤器=“(我们的软件包.xyzVersion=4.12.7)”。
如果我删除选择过滤器子句,那么它似乎是导出的,但没有产生实际的工件。
我从上面的链接推断的建议是包括 vmarg
在插件开发目标环境中。然而,这似乎并不满足 OSGi 框架。现在我不知道如何让片段解析以便导出可以继续。