Android Studio – 导入Simple-Xml库

我疯狂使用我的Android Studio IDE。

我愿意从Central(v2.7.1)添加Maven库simple-xml

  1. 项目编译得很好

  2. Gradle在build.gradle有lib依赖build.gradle

     dependencies { compile 'com.android.support:appcompat-v7:18.0.0' compile 'org.simpleframework:simple-xml:2.7.1' } 
  3. 在Android Studio的Module Settings中为simple-xml lib检查导出:

这里截图: http : //s6.postimg.org/xxgj56zkx/Module_Settings.png

当我运行我的应用程序时,我没有find类

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

我迷路了,这听起来像Gradle不包装的lib和依赖的apk中的一些原因….

有任何想法吗 ???

编辑1 :我的Android Studio版本是0.2.13(最新),Gradle 0.5。+

编辑2 :完整build.gradle我使用


     buildscript {
        储存库{
             mavenCentral()
         }
        依赖{
             classpath'com.android.tools.build:gradle:0.5.+'
         }
     }
    应用插件:'android'

    储存库{
         mavenCentral()
     }

     android {
         compileSdkVersion 17
         buildToolsVersion“17.0.0”

         defaultConfig {
             minSdkVersion 14
             targetSdkVersion 18
         }
     }

    依赖{
        编译“com.android.support:appcompat-v7:18.0.0”
        编译'org.simpleframework:simple-xml:2.7.1'
     }

Solutions Collecting From Web of "Android Studio – 导入Simple-Xml库"

你应该这样添加simple-xml库:

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

stax-apixpp3库与Android类相冲突。 来自这些jar子的类似乎被包含在Android中。

原始的dex信息是:

麻烦处理“javax / xml / stream / events / StartElement.class”:

当不构build核心库时,build议或错误地使用核心类(java。*或javax。*)。

这通常是由于在使用IDE(如Eclipse)时,无意中在应用程序项目中包含核心库文件。 如果你确定你不是故意定义一个核心类,那么这是最可能的解释。

但是,您可能实际上正试图在核心命名空间中定义一个类,例如,您可能从非Android虚拟机项目中获取了该类的源。 这肯定是行不通的。 至less,它会危害您的应用程序与未来版本的平台的兼容性。 这也常常是有问题的合法性。

如果你真的打算build立一个核心库 – 这只是作为创build一个完整的虚拟机分布的一部分,而不是编译一个应用程序 – 然后使用“ – 核库”选项来抑制这个错误信息。

如果你继续使用“–core-library”,但实际上正在构build一个应用程序,那么应该预先警告你的应用程序在某个时候仍然无法build立或运行。 请为愤怒的客户做好准备,例如,发现您的应用程序在升级操作系统后就停止运行。 你会被责怪这个问题。

如果你正在使用一些恰好在核心软件包中的代码,那么最简单的安全select就是重新打包代码。 也就是说,将有问题的类移动到您自己的包名称空间中。 这意味着他们永远不会与核心系统类冲突。 JarJar是一个工具,可以帮助你在这个努力。 如果你发现你不能这样做,那么这就表明你所走的道路最终会导致痛苦,痛苦,悲伤和悲伤。

我用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> 

我发现了这个问题。

正如我预料的那样,它是0.5。+的分级插件。

Android Studio 0.3.0和Gradle插件0.6。+(Gradle 1.8)现在解决了这个问题。

不过,我使用Android Studio 0.2.13和Gradle插件0.5这样的应用程序:

由于gradle插件拒绝从maven central部署库,我将库和依赖项下载到了我的项目的lib目录中。 我将项目设置为在项目的lib目录中使用本地库。

解决方法的指示:

  1. 将我的项目中的所有引用移到模块设置中的simple-xml(maven central)

  2. 将simple-xml-2.7.1.jar,stax-1.2.0.jar,stax-api-1.0.1.jar和xpp3-1.1.3.3.jar复制到我的项目中的lib目录

  3. 在我的项目中selectlib simple-xml-2.7.1.jar并使用Add as Library上下文菜单导入这个lib

  4. 像这样改变build.gradle:

    依赖{

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

    }

注意:不要包含依赖关系,否则会和Grzegorz提到的Android系统产生冲突