问题标签 [knopflerfish]
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.
osgi - 将外部 jar 文件添加到 OSGI
我已经创建了一个 OSGi 包,我想向它添加两个外部 jar 文件mediasenseplatform.jar
,tinyos.jar
因此我将这一行添加到我的清单文件中:
但它不起作用,我在我的包 jar 文件中看不到这些文件。我怎么解决这个问题?
java - Knopflerfish,在捆绑包中使用外部库
我知道在 OSGI 包中使用外部库有两种方法。因为只有我的包需要 lib(例如 google-gson),所以我试图将它放在Bundle-ClassPath
(manifest.mf)中。但是,每当我在 Knopflerfish 中运行捆绑包时,我都会得到Exception in thread "Thread-74" [stderr] java.lang.NoClassDefFoundError: com/google/gson/Gson
.
由于我是 OSGI 的新手,所以我尝试按照说明从这里创建一个捆绑包,使用一个build.xml
用于编译的地方,我还包含了 lib(不知道这是否正确)。所以这个库出现在三个不同的地方,项目类路径、包类路径(manifest.mf)和build.xml。
如果有人能给我提示如何使图书馆工作,我会很高兴。提前致谢!
osgi - osgi import-package 无法到达内部类
我有一个捆绑包B1
使用另一个捆绑包B2
和捆绑包B2
导出以下包:
- 包裹
a.b.c
- 包裹
a.b.d
这里的问题是B1
我需要在包 abc 中使用一些内部类,可以说:a.b.c.d.e
但在这种情况下,eclipse 会抛出以下错误:
但我已经B2
导出/B1
导入a.b.c
包!为什么我需要再次插入内部类?
url - 如何处理 URL 协议 bundle://
我尝试在我的包中获取一个文件:
结果是 IllegalArgumentException,原因是“URI 方案不是“文件”。
这是合乎逻辑的,但是我应该如何使用这个 URL(bundle://28/image/logo.jpg)打开一个文件?
如果我使用常规的 ClassLoader,我会得到相同的结果。
编辑:
我的解决方案:
java - OSGI 中的服务和组件
我对 OSGI 概念有一些愚蠢的怀疑,但需要澄清它们才能更好地理解概念。谁能告诉我 OSGI 服务和组件之间有什么区别。我所知道的是,Service 就像 java 中的一个接口文件,可以由不同的服务或组件使用。而组件就像服务的特定实现。
如果我错了,请让我知道,或者建议一些链接,我可以从中得到很好的东西。
osgi - 哪个在 SCR 运行时被称为第一个激活函数或绑定函数
我对组件激活时调用哪个函数激活函数或绑定函数的顺序感到困惑。在我看来,激活函数函数将首先被调用,因为 Bind 函数用于绑定服务。但正如我们所知,所有目标服务都首先进入组件上下文,然后组件才会被激活。
请清除我的疑问。
declarative-services - 设置不兼容字符串的属性
我正在使用声明式服务并面临以下问题。我想用属性注册我的组件,比如使用
bc.registerService(MyClass.class.getName(), this, props);
但是,对于声明式服务,我必须提供定义这些属性的 XML 文件。现在,问题是我没有字符串兼容的值作为属性值(键是字符串)。属性不是任何类型的数字或字符串,而是“创建”方法返回的对象。这不是问题
bc.registerService(MyClass.class.getName(), this, props);
因为 props 可以包含条目。但是我如何使用声明式服务来管理这个?
BR Ewgenij
android - 在 Android 中嵌入 Knopflerfish 不起作用
我正在尝试将 Knopflerfish 框架嵌入到 android 应用程序中以动态加载和卸载包。我跟着这个教程
我做的第一步是从这个链接下载framework.jar,并将它添加到我的eclipse项目中的类路径中。
此外,下面是我的 onCreate() 方法:
请注意,我更改了一行代码,因为它显示了语法错误。
这是:
语法错误:The method newFramework(Map) in the type FrameworkFactory is not applicable for the arguments (Dictionary)
现在,根据@ldx 在这篇文章中的说法,“我为在 Knopflerfish 中提供更好的 Android/Dalvik 支持而提交的补丁已被合并,因此不再需要修补和重新编译 KF:”
因此我没有添加任何东西,假设我的代码已经足够了。
当我运行应用程序时。我立即得到:Unfortunately, Knopflerfish_Android has stopped
在屏幕上。
有人可以帮忙吗?以下是 LogCat:
user-interface - GUI for Knopflerfish Config Admin
Does anybody know about a GUI for Config Admin of Knopflerfish? What I want to achieve is dynamic configuration management without editting configuration files manually. Is that possible at all? Here OSGI blog I read that
To set Config Admin data, take a look at the Felix Webconsole, Felix FileInstall, or the Knopflerfish environment. They all support a range of (G)UIs to create configuration records.
But I could not find any GUI for Knopflerfish :(
java - 在嵌入到 Android 中的 Knopflerfish 上启动 Bundle 不起作用
我将 Knopflerfish 框架嵌入到 android 应用程序中以动态启动和停止捆绑包。
我按照本教程,从这个链接下载了 framework.jar ,并将其添加到我的 Eclipse 项目中的类路径中。
此外,下面是 Activity 类,它启动框架并启动一个包:
正如我在之前的问题中所说的,根据这篇文章中的@ldx,“我为在 Knopflerfish 中提供更好的 Android/Dalvik 支持而提交的补丁已被合并,因此不再需要修补和重新编译 KF:”
因此我没有添加任何东西,假设我的代码已经足够了。
当我运行 android 应用程序时,我没有收到任何错误,而是在我的 LogCat 上收到肯定消息,说我的包已安装并启动。请参阅下面的日志(我忽略了前 2 行):
但是,我的捆绑包并没有真正开始。如果我的包真的启动了,那么包的 start 方法中的一条消息会显示在 LogCat 上。以下是我的捆绑启动方法:
请注意,我的包已被 dexified,但它并没有在我的应用程序中启动。我哪里做错了?
更新 1:我认为我应该将框架的开头与包的开头交换。教程的作者首先启动了bundle,但我想改变它,因为首先启动框架是有意义的,所以我更新的代码有以下内容:
现在,日志没有显示我的包像以前一样启动,而是告诉我执行环境不受支持。请参阅下面更新的 LogCat:
更新 2:我在下面@Neil 的回答之后从我的捆绑清单中删除了这一行,
但这导致了以下错误:
也许,我不应该交换启动框架和启动包的顺序。下面是我更新的 LogCat。