2013-10-17 147 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

帮助我很多!谢谢! –