0

我目前正在开发一个使用 OWL 本体的移动应用程序。

我计划使用 androjena lib,它是 java jena lib 的一个端口。

http://code.google.com/p/androjena/

按照文档中的说明,我已将 Androjena 附带的 5 个 .jar 文件添加到 Android 项目的构建路径中。

这会导致编译时出现以下错误:

[2010-10-05 11:19:28 - MS Project] 警告:忽略不带有关联 EnclosureMethod 属性的匿名内部类的 InnerClasses 属性。(此类可能是由损坏的编译器生成的。)

[2010-10-05 11:19:46 - Dex Loader] 无法执行 dex: null

[2010-10-05 11:19:46 - MS Project] 转换为 Dalvik 格式失败:无法执行 dex:null

有人遇到过类似的问题吗?

谢谢!

4

2 回答 2

2

几个月前,我和我的研究团队参与了一个在基于 Android 的移动设备上使用本体的项目。我们首先尝试了 Androjena 项目 ( http://code.google.com/p/androjena/ ),但它的开发几乎停止了,它只支持 Jena 功能的一个子集。因此,我们尝试在 Android 上使用完整的 Apache Jena 项目。虽然该项目没有直接运行,但我们分析了问题并在 Android 上提供了完整的 Jena 副本。

http://elite.polito.it/jena-on-android

Jena 框架使用命名空间 javax.* 定义了一些包(主要从依赖项继承,特别是 Xerces)。Dalvik 交叉编译器当前将这样的命名空间解释为属于“核心”java 库,因此交叉编译不“安全”。结果是包含此类包的代码不会被交叉编译,除非编译器设置为“核心库”模式,这会导致编译后的代码在系统更新后可能会停止工作,并且正如交叉编译器警告的那样, “最终会导致痛苦、痛苦、悲伤和悲叹。”

实际上,这些包不是 java 核心库的一部分,因此一个简单的重构就可以解决问题。在具体情况下,我们下载了最后的 xerces 源,将所有 javax.* 包重构为 javax2.* 并重新打包库,一切正常。顺便说一句,这在 Android 上启用了完整的 Jena 框架,开发人员能够像当前在典型的 Java 应用程序中那样包含所需的模块。

于 2013-04-08T10:11:19.490 回答
0

即使我遇到了类似的问题。我从外部 JAR 列表中删除了 icu4j.jar,它运行良好。虽然我不确定为什么首先使用这个 JAR。

无论如何,您是否尝试过为移动应用程序和 OWL 使用任何其他推理器?我尝试了 JESS,但它似乎在移植方面存在一些问题。

于 2010-10-05T15:41:35.377 回答