Tag: osgi

OSGI Bundle-NativeCode给出错误“找不到本机代码的匹配”

我正在开发一个使用本机库librxtxSerial的OSGI包。 第一次,我不得不在树莓上部署这个包,所以我做了类似的事情: 我把本机库放在:lib / librxtxSerial.so(NB:INSIDE java项目)。 然后,在MANIFEST我写道: Bundle-NativeCode: lib/librxtxSerial.so 一切正常!!! 现在,问题是我要在使用不同处理器架构的其他嵌入式设备上部署相同的捆绑包(x86而不是ARM)。 所以,我已经下载了librxtxSerial库的x86版本,并修改了我的文件夹结构: – lib – x86 – librxtxSerial.so – arm – librxtxSerial.so 我用这种方式修改了我的MANIFEST: Bundle-NativeCode: lib/x86/librxtxSerial;processor=x86, lib/arm/librxtxSerial;processor=ARM_le 尝试编译(通过maven tycho插件)我总是得到同样的错误: No match found for native code: lib/x86/librxtxSerial; processor=x86, lib/arm/librxtxSerial; processor=ARM_le 我怎么解决这个问题?

以编程方式跟踪eclipse清理所做的文件更改

我编写了一个eclipse osgi插件,它对eclipse项目中存在的java文件运行清理和格式化操作。 就像是: 运行具有eclipse命令的批处理文件 它打开了eclipse编辑器 加载在批处理命令中作为参数传递的eclipse项目 运行清理和格式化操作 关闭日食 现在我的问题是我需要跟踪此操作已更改的文件。 我正在使用cleanUpsAction执行清理更改, cleanUpsAction作为多个文件和进一步分叉的线程运行。 它返回void。 我也尝试过IResourceChangeListener ,但是我无法获得更改的资源名称。 我得到了IResourceChangeEvent对象,但资源的细节并没有出来,它在我打印IResourceChangeEvent.getSource()时总是返回项目名称。

下载Java EE API JAR作为OSGI包

有没有可以下载Java EE API JAR作为OSGi包的地方?

OSGi:缺少要求osgi.wiring.package

我写了一个包含5个模块的项目。 我使用maven在intellij IDEA中创建它们,然后为所有模块添加“OSGi”框架支持。 我使用maven-bundle-plugin来配置export-package和import-package。 但是当我运行它时,总会出现错误: org.osgi.framework.BundleException: Unable to resolve org.gxkl.launcher [12] (R 12.0): missing requirement [org.gxkl.launcher [12](R 12.0)] osgi.wiring.package; (osgi.wiring.package=org.gxkl.server). 启动程序模块包含Bundle-Activator,org.gxkl.server包位于服务模块中。 我使用类似的pom来配置模块,但只有服务模块出错。 启动器中的pom文件如下: ${parent.artifactId} ${parent.groupId} ${parent.version} ${model.version} launcher bundle … ${project.groupId} service ${project.version} … org.apache.maven.plugins maven-source-plugin org.apache.maven.plugins maven-compiler-plugin org.apache.felix maven-bundle-plugin true org.gxkl.Starter org.gxkl … org.gxkl.server 服务中的pom文件如下: ${parent.artifactId} ${parent.groupId} ${parent.version} ${model.version} service bundle … … org.apache.maven.plugins […]

NoClassDefFoundError:使用PowerMock-OSGi的org / hamcrest / Matchers

当我运行我的测试作为OSGi PlugIn测试时,我得到org.hamcrest.Matchers的NoClassDefFoundError,但是当我将其作为普通JUnit运行时测试everthing按预期工作。 我正在使用OSMi版本的PowerMock,并在我的启动配置中包含所有必要的依赖项。 我做错了什么? 由于某些原因,似乎Testrunner没有看到这个class级。 编辑:我创建了一个简化的示例项目,并发现问题只出现在我的类声明中使用@PrepareForTest(XXX.class)时。 java.lang.NoClassDefFoundError: org/hamcrest/Matchers at eu.gemtec.commons.util.assertion.Assert.assertParamNotNull(Assert.java:107) at eu.gemtec.eagle.device.aastra.omaxi.core.system.model.impl.MessageHandleFactory.(MessageHandleFactory.java:72) at eu.gemtec.eagle.device.aastra.omaxi.core.system.model.impl.TestMessageHandleFactory.setUp(TestMessageHandleFactory.java:74) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.junit.internal.runners.MethodRoadie.runBefores(MethodRoadie.java:132) at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:95) at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.executeTest(PowerMockJUnit44RunnerDelegateImpl.java:294) at org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl$PowerMockJUnit47MethodRunner.executeTestInSuper(PowerMockJUnit47RunnerDelegateImpl.java:127) at org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl$PowerMockJUnit47MethodRunner.access$100(PowerMockJUnit47RunnerDelegateImpl.java:59) at org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl$PowerMockJUnit47MethodRunner$LastRuleTestExecutorStatement.evaluate(PowerMockJUnit47RunnerDelegateImpl.java:148) at org.junit.rules.ExpectedException$ExpectedExceptionStatement.evaluate(ExpectedException.java:168) at org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl$PowerMockJUnit47MethodRunner.executeTest(PowerMockJUnit47RunnerDelegateImpl.java:91) at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.runBeforesThenTestThenAfters(PowerMockJUnit44RunnerDelegateImpl.java:282) at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:86) at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:49) at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.invokeTestMethod(PowerMockJUnit44RunnerDelegateImpl.java:207) at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.runMethods(PowerMockJUnit44RunnerDelegateImpl.java:146) at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$1.run(PowerMockJUnit44RunnerDelegateImpl.java:120) at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:33) at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:45) […]

如何动态加载目录中的所有jar?

嗨,我正在创建一个插件,需要动态加载jar并访问这些jar的类和方法。 我尝试使用URLClassLoader,并能够加载类,如下所示 URL myJarFile = new URL(“jar”,””,”file:”+jarPath); URLClassLoader sysLoader =(URLClassLoader)ClassLoader.getSystemClassLoader(); Class sysClass = URLClassLoader.class; Method sysMethod = sysClass.getDeclaredMethod(“addURL”, new Class[]{URL.class}); sysMethod.setAccessible(true); sysMethod.invoke(sysLoader, new Object[]{myJarFile}); 但问题是我们必须通过单独指定其名称来将类加载到classLoader中。 我想要的是从class-path中的所有jar加载所有类,并在任何时间点访问它们。 是否可以使用URLClassLoader? 如果没有,那么其他选择是什么? OSGI实现这一目标有多大帮助? 提前致谢!

Hibernate和Apache Felix的依赖链冲突

我理解OSGi抱怨多个依赖链的概念 – 一个包可以多次使用,当导入包没有准确指定它需要的版本时,OSGi容器可能会遇到不知道提供什么的麻烦。 不幸的是,本周我遇到了这样一个问题,但两个捆绑都是第三方捆绑,所以我无法真正影响他们的import和出口。 以下是我收到的两条错误消息: org.osgi.framework.BundleException: Uses constraint violation. Unable to resolve bundle revision org.hibernate.core [28.0] because it is exposed to package ‘javax.xml.stream’ from bundle revisions com.springsource.javax.xml.stream [23.0] and org.apache.felix.framework [0] via two dependency chains. Chain 1: org.hibernate.core [28.0] import: (osgi.wiring.package=javax.xml.stream) | export: osgi.wiring.package=javax.xml.stream com.springsource.javax.xml.stream [23.0] Chain 2: org.hibernate.core [28.0] import: (osgi.wiring.package=javax.xml.transform.stax) | export: osgi.wiring.package=javax.xml.transform.stax; […]

我该如何将OSGi控制台实现为Bundle?

我是OSGi的新手,我正在尝试将osgi控制台实现为一个捆绑包。 我需要管理我的捆绑包中的其他捆绑/服务。 所以我需要能够至少在已安装或未安装的其他服务上使用“ss”,“install”和“unistall”命令。 必须在没有人工交互的情况下管理所有这些命令,因此我必须将其实现到我的应用程序中。 该程序将安装在uPC上,无需连续监控。 我已经google了将OSGi控制台实现为捆绑的方式,但我发现没有任何相关性。 我正在使用OSGi 3.7.1并尝试使用Equinox。

将EAR模块转换为OSGI包的正确方法

有必要将EAR的一部分(即 – war)转换为OSGI包并保持其互操作性。 Glassfish 3.0.1已经有了osgi-web-container模块,我成功地部署了独立的OSGI战争。 但是在前企业战争的情况下,对我来说看起来有点困难。 从未来的OSGI战争中我如何处理EJB调用? 是否足以用真正的JNDI查找替换@EJB注入? 在EAR中共享的API和库怎么样? 我可以拆分并重新安排它们,但是我仍然需要EAR和OSGI战争所需的至少一个jar子。 复制,使其成为OSGI-bundle本身,并以某种方式使其可用于耳朵,放置GF域的库路径? 任何其他想法,可以使混合动力工作的建议?

列表元素如何在下循环播放?

在我的html页面中,我想遍历我的Java类返回的属性,但是在标记下进行。 目前我的html页面有: …. var markers = [ [‘Bondi Beach’, -33.890542, 151.274856], [‘Coogee Beach’, -33.923036, 151.259052], [‘Cronulla Beach’, -34.028249, 151.157507], [‘Manly Beach’, -33.80010128657071, 151.28747820854187], [‘Maroubra Beach’, -33.950198, 151.259302] ]; ….. 我的Java类有以下getter: //returns [0] = “something, -33.89, 151.2” [1] = “beach, -33.9, 15.02” etc. public List getVals() { return vals; } public String getGoogleClass() { if (vals.size() […]