问题标签 [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.
java - Eclipse RCP - 使用片段提供翻译
我有一个关于在 Eclipse RCP 中使用 Fragments 的简短问题。目前我正在使用消息机制来翻译我的字符串。Messages.java 和 *.properties 文件位于我的插件中,一切正常。现在我想为不同的客户使用不同的字符串/翻译。据我所知,插件片段是一个可能的解决方案。我读过无法使用片段覆盖主机插件中的文件。所以我想我必须使用 2 个不同的片段来提供正确的 *.properties 文件。下图显示了我认为必须使用的架构。
配置片段项目后(设置了主机插件并且 *.properties 文件位于与主机相同名称的包中),我想通过 Eclipse IDE 启动我的 RCP 应用程序。2 个运行配置也已配置。使用 OSGI 控制台时,我看到我的片段存在并且已解决。
但我的问题是没有使用提供的来自片段的字符串/翻译。每次我启动应用程序时,都会使用一些旧的字符串/翻译(在将属性文件移动到片段之前使用的那个)。
有人知道我做错了什么以及我的解决方案是否正确吗?
提前致谢 :)
osgi - 当bundle与其片段之间的类重复时,类加载器如何
我对OSGI片段有一些误解,
假设我部署了一个包含两个类“com.company.C1”和“com.company.C2”的包“B”,其中C1 使用C2。然后,我为主机包“B”部署了一个片段“F”,其中 F 仅包含一个类“com.company.C2”(对第一个类的代码稍作更改)
现在,如果正在执行类“com.company.C1”,将使用哪个类(文件)“com.company.C2”,来自“B”还是来自“F”?
同一个类加载器中存在两次相同的类 C2 会导致运行时错误(相同版本和不同版本)吗?
java - 在 OSGi 扩展包中注册服务
我正在玩 OSGi 框架扩展包以便完全理解它们。在查看了 OSGi R6 规范(3.15 和 4.2.4.1)之后,我成功地调用了ExtensionBundleActivator
. 现在我正在尝试在此类激活器中注册服务。但是,当我尝试使用此类服务时,引用注释无法连接该服务。
这是我的代码('已经更改了捆绑包的名称,但这没关系):
这是此类扩展包的清单:
消费包(包的一部分):
我的问题是:我做错了什么?为什么消费者检测不到扩展包的注册服务?或者,也许我只是在做框架禁止的事情……在这种情况下,不可能从扩展包中提供服务吗?如何与扩展包中的代码进行交互(也就是访问扩展包本身的内容)?
这里有一些注意事项:
- 我使用 felix 作为 OSGi 实现;
- “ExtensionBundleExample”和“BundleExample”都加载在 felix 的自动进程文件夹中(默认的是“bundle”,但我调整了
config.properties
使用“corebundles”文件夹; - 输出正确显示“启动扩展包激活器!” 但是当显示 的引用时
actualBundleExample
,输出显示“null”; - BundleExample 的可选基数用于测试目的:我只想调用消费者组件具有的“激活器”方法(以便查看
System.out.println
控制台; - 从我之前的问题中,我了解到扩展包是 OSGi 框架中的一个小众市场,但我仍然想了解它们:我发现互联网上缺乏关于这个主题的示例非常烦人;
感谢您的回复!
osgi - java.lang.ClassCastException:com.sun.xml.internal.ws.client.sei.SEIStub 无法转换为 org.apache.cxf.frontend.clientproxy AEM OSGi
我正在尝试在 AEM 的 osgi 环境中使用fuelsdk。我收到此错误 -
java.lang.ClassCastException:com.sun.xml.internal.ws.client.sei.SEIStub 无法转换为 org.apache.cxf.frontend.ClientProxy
这是因为 OSGi 在嵌入了fuelsdk 依赖项的包之前加载了系统包。捆绑包得到解决;此错误发生在运行时。
如何强制 OSGi 类加载器在运行时选择 org.apache.cxf.frontend.ClientProxy 而不是 com.sun.xml.internal.ws.client.sei.SEIStub?
我可以使用'uses'指令的组合吗?和/或导入/导出包?
有人建议我使用 -
我想知道我应该在 factory.setServiceClass() 中使用哪个类;
和
我应该在 factory.setAddress() 中使用哪个地址;是端点地址吗?-- https://webservice.s6.exacttarget.com/Service.asmx
非常感谢帮助谢谢
java - Eclipse 产品导出:片段错误(未找到主机插件)
我在Eclipse RCP 3.8.2 IDE中有一个工作区,其中包含 3 个插件和 2 个片段:
- P1 和 P2 插件
- BONECP1 片段(P1 是主机)
- BONECP2 片段(P2 是 HOST)
- MAIN 插件(需要 P1 和 P2)
在 IDE 中运行 MAIN 插件的生活很顺利......但是在导出 MAIN 插件(作为 Eclipse RCP 产品)时,片段 BONECP2 会导致此错误:
有任何想法吗?提示:
- 片段是克隆的(类路径库是相同的!)
- 有时(如果在 BONECP1 片段中更改了某些配置)BONECP2 片段无法找到已加载并存在于主机中的某些类。重新配置BONECP1片段(使其不再是单例/单例)解决了这个问题!!
- 如果再次尝试导致错误的操作,则找到之前未找到的类!(导出版本和 IDE 内部)
- 删除 BONECP2 片段的HOST MINIMUM VERSION解决了 EXPORT 错误...但是 BONECP2 片段找不到一些已加载并存在于 HOST 中的类!
我对片段的理解缺少什么?为什么 Eclipse 可以在 IDE 中使用此配置而不是在导出时?
这是 BONECP 片段的清单:
java - OSGI:使用片段中另一个包中的代码
我想将一个 OSGI 片段添加到一个包中,这里是“org.eclipse.equinox.http.jetty”,其中 Manifest.mf 如下所示:
不幸的是,我的代码需要在其他包中定义的代码,在“org.eclipse.jetty.io”中。所以我将以下行添加到清单中:
现在 - 在 Eclipse 中 - 代码编译。但是当我启动应用程序时,我得到以下异常(MyJettyCustomizer
是片段中的一个类,由片段主机“org.eclipse.equinox.http.jetty”中的代码每次反射使用):
如果我从清单中删除需要“org.eclipse.jetty.io”的代码MyJettyCustomizer
并再次从清单中删除“Import-Package:org.eclipse.jetty.io”行,则运行时没有异常并且类MyJettyCustomizer
是正确的加载。
那么有没有可能我可以在 OSGI 片段中使用来自另一个包的代码?
osgi - Felix:无法在 JDK 9 上添加扩展包
迁移到 JDK 9+ 后,我们围绕 apache Felix 构建的 OSGi 容器开始无法安装扩展包。错误信息是:
我们的 Felix 版本是 5.6.10,这是目前可用的最新版本。捆绑清单的相关部分:
osgi - OSGI 上的 AspectJ LoadTimeWeaving
我正在尝试借助 Equinox jars(org.aspectj.runtime、org.aspectj.weaver、org.eclipse.equinox.weaving.aspectj on bundles 文件夹和 org.eclipse)在 OSGI 上使用 aspectJ Load Time Weaving(无 Spring) .equinox.weaving.hook 位于与 org.eclipse.osgi 物理位置相同的文件夹)根据:https ://wiki.eclipse.org/Equinox_Weaving_QuickStart
这是捆绑包的加载顺序:
我想知道我应该如何启动钩罐?我会很感激任何帮助... ps有人通过将包“org.eclipse.osgi”和片段“org.eclipse.equinox.weaving.hook”作为“带有链接内容的二进制项目”导入他的工作区来解决他的问题,但我不太确定该怎么做: https ://www.eclipse.org/forums/index.php?t=msg&th=440862
感谢您的回复
java - org.osgi.framework.BundleException:无法解析模块:org.eclipse.jetty.plus
从 Karaf 缓存日志中,当我在 karaf 中部署捆绑包时,我多次收到以下错误
groovy - 从 Groovy 2.4 升级到 2.5 时由于“无法启动片段包”而解决 OSGi 测试?
这是在 OSGi 中运行时如何将 groovy-all 从 2.4 升级到 2.5的后续问题?. 在 Groovy 的 2.5 版中,该groovy-all
工件不再作为 jar 文件提供,因此上述答案中的建议是改用单独的 jar 文件。我有一个使用Pax Exam的测试用例,如下所示:
兴趣点是:
现在我想升级到 Groovy 2.5.6,所以我将上面的行替换为:
但是现在当我重新运行测试时,出现以下错误:
我该如何解决这个问题?