问题标签 [ipojo]
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.
android - Android SLF4J:NoClassDefFoundError android.util.Log
我正在将现有的 OSGi/Felix/iPOJO 应用程序从 Windows 移植到 Android。该应用程序正在使用 SLF4J。我将 slf4j-android 部署为一个捆绑包。但是,我在尝试实例化记录器的行上收到java.lang.NoClassDefFoundError: android.util.Log 。
SLF4J 文档说我只需要在我的类路径上有 slf4j-android jar,不需要进一步的配置。( http://www.slf4j.org/android/ )
我的记录器被声明为:
堆栈跟踪抱怨的行是:
这是完整的方法:
当我引用记录器时,为什么我在 android.util.Log 上收到 NoClassDefFoundError 的任何线索?
完整的堆栈跟踪:
ipojo - iPOJO - NullPointer when using injected service
I have defined a service:
And an implementation:
In another class (actually an Activator
class), I refer to the service like this:
But I get a NullPointerException
I installed Arch Gogo and these are the results:
What am I missing?
(The byte code manipulation is done by an Ant task, btw)
java - 如何在 Eclipse 中使用 BndTools 设置 iPojo?
我正在尝试使用 iPojo 注释在 Eclipse 中进行组件声明。问题是当它生成 XML 和修改的类时,bnd-ipojo-plugin 在插件类路径中找不到注释。
我在 Eclipse 中遇到这样的错误:
我已修改 .bnd 文件以包含“-plugins”属性:
我的 Eclipse 项目在 BuildPath 中也有所有 iPojo jar。有没有人有什么建议?或者有没有更好的方法将 iPojo 集成到 Eclipse 中?
编辑 1
我已经完全重建了我的工作区并将-plugin
and-pluginpath
变量移到了 build.bnd 文件中。
它现在看起来像这样:
现在所有的错误都消失了,它的构建没有失败。但是,仍然没有生成 XML 文件。除了更改 build.bnd 文件之外,还有其他步骤吗?
java - org.osgi.* 的包导入是否被区别对待?
在 OSGi 中,定义的依赖关系的解析过程,即包导入和导出,在使用版本号和版本范围时非常严格。如果对于版本 1.2.3 的某些包导入没有找到范围包含 1.2.3 的对应导出,则无法解析或启动捆绑包。这很好。
但是,这似乎不适用于 core 包org.osgi.framework
。Equinox (3.8.0) 和 Apache Felix (4.0.3) 的当前版本都定义org.osgi.framework,version=1.7.0
为导出的包之一。但是,需要此软件包的特定较低版本的捆绑包,例如Import-Package: org.osgi.framework;version=1.3
,仍将其解析为此较新版本。我希望捆绑不会得到解决。
如何解释这种行为?这是 OSGi 实现的不当行为吗?我在解析核心 OSGi 包时遗漏了一个异常?或者 Karaf 是否妨碍了这里(我用 Apache Karaf 对此进行了测试,见下文)
我知道我宁愿不明确声明版本,并且版本会产生一个完全可解析的范围。但是,定义此类导入的捆绑包不受我控制(即:iPOJO,见下文)。
一些设置细节:我在 Karaf 2.3.2 和 2.3.3 中测试了这个,分别启用了 Equinox 或 Felix。你可以在 github上找到我用于测试的演示包,它可以按原样构建,并在部署到新的 Karaf 容器时显示失败。我发现这一点的原因是核心 iPOJO 包定义了这样的显式版本而不是范围。我将此添加到 Karaf 功能描述符中,并尝试使用Karaf Features Maven Plugin验证功能导出/导入完整性,但失败了。
java - 使用 Apache Felix iPOJO 事件管理处理程序
我想使用Event Admin Handlers。
我正在尝试运行以下代码:
但是有错误:
据我了解,无法获取 Publisher 组件的实例。我有活动的“Apache Felix iPOJO 事件管理处理程序 (1.8.0)”捆绑包。
利用:
- 阿帕奇菲利克斯 4.2.1
- org.apache.felix.ipojo.annotations (1.11.0)
- org.apache.felix.ipojo.api (1.11.0)
- org.apache.felix.ipojo.handler.eventadmin (1.8.0)
怎么了?谢谢。
这是捆绑列表:
java - 在 Android 上使用 iPOJO 启动 apache-felix 4.2.1
我尝试在 Android 4.+ 上使用 iPOJO 1.11.0 启动 apache-felix 4.2.1。
config.properties 标准添加:
启动命令:
启动后写:
1)这个问题我所有的应用程序都可以正常工作,但也许有人知道如何修复这个问题?(然后从osgi-android.zip启动 apache felix - 没有这个问题。)
启动 Apache Felix iPOJO (1.11.0) 时抛出错误:
2)如何正确启动org.apache.felix.ipojo-1.11.0.jar?iPOJO 支持 Android 有限制
捆绑:
更新:
使用 dex2jar-0.0.9.15 classes.dex->classes.jar
classes.jar 包含:
然后dexing有警告,但ConsoleLogService没有警告。
dx --dex --output=./classes.dex ./org.apache.felix.ipojo-1.11.0.jar:
osgi - 访问服务使用者 (iPOJO) 中的服务属性
在 iPOJO 中,有没有办法读取服务使用者中的服务属性(例如 getProperty(key) )?发布者非常直截了当,但在消费者看来我只能使用过滤器。
谢谢
java - 在用户请求时以编程方式创建 ipojo 组件实例
使用 Apache Felix 4.2.1 iPOJO 1.11.0。
需要在用户请求时以编程方式创建组件实例。但我不能在静态工厂方法中使用非静态字段。
1)如果我理解正确,那么带有@Requires 注释的字段不能是静态的。如何创建获取属性并接收新组件实例的工厂方法?
2)这样做是正常的做法吗?
java - 像 java 桌面应用一样嵌入 Apache felix Ipojo
如何创建可以双击打开的 IPOJO 应用程序,如 Java 应用程序?
我有一些代码:
IPOJO 捆绑包开始
它运行没有任何错误,但它只打印“开始”。它不打印“Hello world”。请帮我解决这个问题。
java - IPOJO - 与组件类型关联的工厂无效(未启动或缺少处理程序)
我正在尝试学习如何使用 Felix iPOJO API 来动态创建组件。
我有一个包含以下文件的简单捆绑包:
1- HelloService.java
(包含服务接口)。
2- 其实施HelloServiceImpl.java
:
3- Activator.java
:
4- MANIFEST.MF
:
在我的应用程序中,我启动 Felix 框架并部署以下包:
根据这个消息来源。
接下来,我安装我的包,并实例化组件。下面是我的课:
当我运行我的应用程序时,它显示以下输出(最后有错误):
我哪里做错了?谢谢。
更新 1
我可以看到我缺少 2 个处理程序。我知道通过添加以下两行:
上面两行的输出是:
我也试过:
type.getFactory().createComponentInstance(new Properties());
然后我得到:
我不知道为什么缺少这些处理程序。我试图添加它们,但无法找出正确的语法。有什么帮助吗?谢谢。
更新 2
根据克莱门特在他的回答中,我的包应该导入:org.apache.felix.ipojo
和org.apache.felix.ipojo.architecture
我这样做了,现在我收到以下错误:
我在这一行收到错误:type.start();
请帮忙。谢谢!