首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓系统中的诺弗莱鱼-捆绑启动失败

安卓系统中的诺弗莱鱼-捆绑启动失败
EN

Stack Overflow用户
提问于 2013-09-04 05:34:27
回答 1查看 128关注 0票数 0

我遵循这个教程将OSGi嵌入到我的Android应用程序中。但是,在安装和启动包之后,它的状态就被解决了(4),而不是必须是活动的(32)。当我再次尝试重新开始时,它会抛出一个异常:

代码语言:javascript
复制
Bundle#1 start failed
java.lang.ClassNotFoundException: org.knopflerfish.tutorial.simplebundle.impl.Activator
org.knopflerfish.framework.BundleImpl.start0(BundleImpl.java:421)
org.knopflerfish.framework.BundleThread.run(BundleThread.java:145)

这个包是来自克氏鱼例子来源的示例包。当安装在Knopflerfish destop (framework.jar)中时,它运行良好。

我已经想到了dex,但是合并jar文件和它的dex文件是没用的,它仍然不能工作。

这里有什么问题?非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-10 09:30:22

几天后,我找到了解决这个问题的办法。我把它寄给任何关心此事的人。

首先,这个问题与dex文件有关。找不到dex文件,使BundleClassLoader找不到Activator类。在jar文件中,在执行dx和aapt命令后,*.dex必须位于顶部路径。您可以通过解压缩jar文件来检查这一点。

代码语言:javascript
复制
bundler.jar
----META-INF
----org
----classes.dex

另外一点,你需要考虑的是,如果你的应用仍然不工作。在Android更新版本中,dex文件不能位于外部存储中(如这里所解释的http://developer.android.com/reference/dalvik/system/DexClassLoader.html),因此您需要修改设置org.osgi.framework.storage属性的代码。

而不是:

代码语言:javascript
复制
Map<String, String> fwprops = new Hashtable<String, String>();
fwprops.put("org.osgi.framework.storage", Environment.getExternalStorageDirectory().getAbsolutePath() + "/fwdir");

我用这个:

代码语言:javascript
复制
Map<String, String> fwprops = new Hashtable<String, String>();
File dexOutputDir = getDir("dex", 0);
fwprops.put("org.osgi.framework.storage", dexOutputDir.getAbsolutePath());

希望能帮上忙。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18606087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档