在Android上构建失败Jena(Androjena)

时间:2010-10-05 09:59:37

标签: java android jena

我目前正致力于使用OWL本体的移动应用程序。

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

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

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

编译时会导致以下错误:

[2010-10-05 11:19:28 - MS Project]警告:忽略没有关联的EnclosingMethod属性的匿名内部类的InnerClasses属性。 (这个类可能是由一个破碎的编译器产生的。)

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

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

任何人遇到过类似的问题吗?

谢谢!

2 个答案:

答案 0 :(得分: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应用程序中完成的所需模块。

答案 1 :(得分:0)

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

无论如何,您是否曾尝试将任何其他推理用于移动应用和OWL?我试过JESS,但似乎有一些移植问题。