2013-10-17 145 views
20

我瘋狂使用我的Android Studio IDE。Android Studio - 導入Simple-Xml庫

我願意從中央(v2.7.1)添加Maven的庫簡單的XML

  1. 該項目編譯好

  2. 搖籃在其build.gradle的lib依賴性:

    dependencies { 
        compile 'com.android.support:appcompat-v7:18.0.0' 
        compile 'org.simpleframework:simple-xml:2.7.1' 
    } 
    
  3. 在Android Studio的模塊設置中爲simple-xml庫檢查導出:

截圖在這裏:http://s6.postimg.org/xxgj56zkx/Module_Settings.png

而且我得到了,當我運行我的應用程序沒有找到類......

java.lang.NoClassDefFoundError: org.simpleframework.xml.core.Persister 

我很失落,這聽起來像搖籃不包的lib並在apk中的依賴由於某些原因....

任何想法?

EDIT1:我的Android Studio版本是0.2.13(最新的),搖籃0.5 +

EDIT2:充分的build.gradle我用

 

    buildscript { 
     repositories { 
      mavenCentral() 
     } 
     dependencies { 
      classpath 'com.android.tools.build:gradle:0.5.+' 
     } 
    } 
    apply plugin: 'android' 

    repositories { 
     mavenCentral() 
    } 

    android { 
     compileSdkVersion 17 
     buildToolsVersion "17.0.0" 

     defaultConfig { 
      minSdkVersion 14 
      targetSdkVersion 18 
     } 
    } 

    dependencies { 
     compile 'com.android.support:appcompat-v7:18.0.0' 
     compile 'org.simpleframework:simple-xml:2.7.1' 
    } 

+0

cf我編輯2的完整build.gradle文件 – existenz31

回答

1

我發現了這個問題。

正如我預料的那樣,它是漸變插件0.5。+。

帶有gradle插件0.6。+(Gradle 1.8)的Android Studio 0.3.0現在解決了這個問題。

不過,我做了應用與Android工作室0.2.13和gradle這個插件0.5這樣的工作:

由於gradle這個插件拒絕從行家中央部署庫,我下載了庫和依賴關係我的項目的lib目錄。 我設置了項目以在項目的lib目錄中使用該庫作爲本地庫。

路線的變通方法:

  1. 刪除在我的項目,以簡單的XML(行家中心)的所有引用在模塊設置

  2. 複製簡單的XML-2.7.1.jar,STAX -1.2.0.jar,stax-api-1.0.1.jar和xpp3-1.1.3.3.jar到我的項目中的lib目錄

  3. 在我的項目中選擇lib simple-xml-2.7.1.jar並使用添加爲庫的上下文菜單導入庫lib

  4. 更改構建。gradle這個是這樣的:

    依賴{

    compile 'com.android.support:appcompat-v7:18.0.0' 
    
    compile files('simple-xml-2.7.1.jar') 
    

    }

注:不包括相關性,否則他們將創建Android系統衝突的格熱戈日

55

您應該添加simple-xml庫這樣:

compile('org.simpleframework:simple-xml:2.7.1') { 
    exclude group: 'stax', module: 'stax-api' 
    exclude group: 'xpp3', module: 'xpp3' 
} 

stax-apixpp3與Android類衝突。來自這些罐子的課程似乎已包含在Android中。

原始dex信息是:

麻煩處理 「的javax/XML /流/活動/ StartElement.class」:

不明智或錯核心類(爪哇使用*或javax。*)當 不構建核心庫時。

這通常是由於在使用IDE(如Eclipse)時,無意中在您的應用程序的項目中包含了一個核心庫文件 。如果 你確定你不是故意定義一個核心類,那麼這個 是最可能的解釋。

但是,您可能實際上正在嘗試在覈心 名稱空間中定義一個類,該名稱空間的來源可能來自例如 非Android虛擬機項目。這肯定不會是 的工作。至少,它會危害您的應用程序與未來版本的平臺的兼容性。它也常常是有問題的合法性。

如果你真的打算建立一個核心庫 - 這是隻有 適合作爲創建一個完整的虛擬機分配, 而不是編譯應用程序的一部分 - 然後使用 「--core庫」選項來抑制此錯誤消息。

如果你繼續使用「--core庫」,但事實上是構建 應用程序,然後諒解,您的應用程序仍然會失敗 建設或運行,在某些時候。請爲憤怒的客戶 做好準備,例如,他們發現您的應用程序在他們升級其操作系統後不再起作用 。你將被責怪這個 的問題。

如果您正在使用恰巧位於核心 包中的某些代碼,那麼最簡單的安全替代方法是將該代碼重新包裝爲 。也就是說,將有問題的類移動到您自己的包 名稱空間中。這意味着他們永遠不會與系統類核心 發生衝突。 JarJar是一個可以幫助你完成這項工作的工具。 如果您發現自己無法做到這一點,那麼這表明您所走的路徑最終會導致疼痛,痛苦,悲傷,悲傷和悲傷。

+0

您對依賴關係排除是正確的。我需要排除我的build.gradle中的庫。這種解決方法只有當我使用在我的項目的本地目錄庫中下載的簡單xml庫時才起作用....悲傷地 – existenz31

+0

最有用的答案!這個對我有用。 –

+0

更新到gradle 0.12.2時剛剛開始看到此問題。這個建議就像一個魅力。 –

5

如mentionned我在Android上使用maven時遇到了同樣的錯誤。我糾正了依賴性,一切運行良好。這是我對simple-xml庫的依賴:

<dependency> 
<groupId>org.simpleframework</groupId> 
<artifactId>simple-xml</artifactId> 
<version>2.7.1</version> 
<scope>compile</scope> 
<exclusions> 
    <exclusion> 
     <artifactId>xpp3</artifactId> 
     <groupId>xpp3</groupId> 
    </exclusion> 
    <exclusion> 
     <artifactId>stax-api</artifactId> 
     <groupId>stax</groupId> 
    </exclusion> 
    <exclusion> 
     <artifactId>stax</artifactId> 
     <groupId>stax</groupId> 
    </exclusion> 
    <exclusion> 
     <artifactId>spring-web</artifactId> 
     <groupId>org.springframework</groupId> 
    </exclusion> 
    <exclusion> 
     <artifactId>commons-logging</artifactId> 
     <groupId>commons-logging</groupId> 
    </exclusion> 
</exclusions> 
</dependency> 
+1

你救了我的一天!優秀! – tomurka

+0

這是使用Maven時的正確答案。 :-) – Vijay

+0

幫助我很多!謝謝! –