2010-10-05 68 views
0

我目前正在使用OWL本體的移動應用程序。構建失敗Jena on Android(Androjena)

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

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

由於文件中的說明,我已經加入包含Androjena 5個.jar文件到Android項目的構建路徑。

這編譯時將導致以下錯誤:

[2010-10-05 11點19分28秒 - MS工程]警告:忽略InnerClasses屬性爲一個匿名內部類,沒有拿出一個關聯的EnclosingMethod屬性。 (這個類可能是由一個破碎編譯器產生的)

[2010-10-05十一時十九分46秒 - 地塞米松裝載機]無法執行DEX:空

[2010-10-05 11點19分:46 - MS Project]轉換爲Dalvik格式失敗:無法執行dex:null

任何人遇到類似的問題?

謝謝!

回答

0

即使我遇到了類似的問題。我從外部JAR列表中刪除了icu4j.jar,它工作正常。雖然我不確定爲什麼這個JAR首先被使用。

無論如何,你是否嘗試過使用任何其他reasoners移動應用程序和OWL?我嘗試過JESS,但它似乎在移植時遇到了一些問題。

+0

好吧,除去icu4j.jar也幫助了我,但是我還沒有發現任何其他與android兼容的良好OWL reasoners。 – Tyrone 2010-10-06 07:00:51

+0

ICU是一個國際化的廣告 - 在刪除它之後,只需注意將來的國際化問題 – 2011-07-17 15:21:49

+0

一些reasoners移植到Android,位於http://sid.cps.unizar.es/AndroidSemantic/Reasoners/reasoners.html – Guillermo 2015-06-09 10:37:21

2

幾個月前,我和我的研究團隊參與了一個在基於Android的移動設備上使用本體的項目。我們首先嚐試了Androjena項目(http://code.google.com/p/androjena/),但它的開發幾乎停止,它只支持耶拿功能的一個子集。因此我們嘗試在Android上使用完整的Apache Jena項目。雖然該項目不是直接工作,但我們分析了這些問題,並在Android上提供了完整的Jena工作副本。

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

Jena框架使用命名空間的javax定義了一些包(大多來自相關性,繼承的Xerces,尤其是)。*。這樣的名稱空間目前被Dalvik交叉編譯器解釋爲屬於「核心」java庫,因此對於交叉編譯來說不是「安全的」。結果是,包含這些包的代碼不會交叉編譯,除非編譯器設置爲「core-library」模式,這會導致編譯後的代碼在系統更新後可能會停止工作,並且由於交叉編譯器警告, 「最終會導致痛苦,痛苦,悲傷和悲傷。」

實際上,軟件包並不是Java核心庫的一部分,因此簡單的重新分解解決了這個問題。在具體的情況下,我們下載了最後的xerces源代碼,將所有javax. *包重構爲javax2。*並重新打包了庫,並且所有工作都很完美。順便說一下,這使得Android上的完整Jena框架成爲可能,開發人員只需包含當前在典型Java應用程序中完成的所需模塊即可。

+0

您可以也請嘗試https://github.com/seus-inf/jena-android – Guillermo 2015-06-09 10:32:59