问题标签 [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.

0 投票
1 回答
2569 浏览

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 的任何线索?

完整的堆栈跟踪:

0 投票
1 回答
313 浏览

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)

0 投票
2 回答
595 浏览

java - 如何在 Eclipse 中使用 BndTools 设置 iPojo?

我正在尝试使用 iPojo 注释在 Eclipse 中进行组件声明。问题是当它生成 XML 和修改的类时,bnd-ipojo-plugin 在插件类路径中找不到注释。

我在 Eclipse 中遇到这样的错误:

我已修改 .bnd 文件以包含“-plugins”属性:

我的 Eclipse 项目在 BuildPath 中也有所有 iPojo jar。有没有人有什么建议?或者有没有更好的方法将 iPojo 集成到 Eclipse 中?

编辑 1

我已经完全重建了我的工作区并将-pluginand-pluginpath变量移到了 build.bnd 文件中。

它现在看起来像这样:

现在所有的错误都消失了,它的构建没有失败。但是,仍然没有生成 XML 文件。除了更改 build.bnd 文件之外,还有其他步骤吗?

0 投票
2 回答
132 浏览

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验证功能导出/导入完整性,但失败了。

0 投票
1 回答
379 浏览

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)

怎么了?谢谢。


这是捆绑列表:

0 投票
2 回答
773 浏览

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:

0 投票
1 回答
181 浏览

osgi - 访问服务使用者 (iPOJO) 中的服务属性

在 iPOJO 中,有没有办法读取服务使用者中的服务属性(例如 getProperty(key) )?发布者非常直截了当,但在消费者看来我只能使用过滤器。

谢谢

0 投票
1 回答
524 浏览

java - 在用户请求时以编程方式创建 ipojo 组件实例

使用 Apache Felix 4.2.1 iPOJO 1.11.0。

需要在用户请求时以编程方式创建组件实例。但我不能在静态工厂方法中使用非静态字段。

1)如果我理解正确,那么带有@Requires 注释的字段不能是静态的。如何创建获取属性并接收新组件实例的工厂方法?

2)这样做是正常的做法吗?

0 投票
1 回答
290 浏览

java - 像 java 桌面应用一样嵌入 Apache felix Ipojo

如何创建可以双击打开的 IPOJO 应用程序,如 Java 应用程序?

我有一些代码:

IPOJO 捆绑包开始

它运行没有任何错误,但它只打印“开始”。它不打印“Hello world”。请帮我解决这个问题。

0 投票
1 回答
542 浏览

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.ipojoorg.apache.felix.ipojo.architecture

我这样做了,现在我收到以下错误:

我在这一行收到错误:type.start();

请帮忙。谢谢!