2013-10-17 30 views
20

私はAndroid Studio IDEに夢中になります。Androidスタジオ - Simple-Xmlライブラリをインポートする

私は

  1. 中央からMavenのライブラリ単純なXMLを追加して喜んで(v2.7.1)プロジェクトがうまくコンパイル

  2. のGradleはその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ライブラリのモジュール設定で確認されています:

ここにスクリーンショット:GradleのはLIBをパックしないようhttp://s6.postimg.org/xxgj56zkx/Module_Settings.png

そして私は、私は私のアプリを実行すると、クラスが見つからないだ...

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

私は失われたのですが、それは聞こえますいくつかの理由でAPKに依存しています....

アイデア???

EDIT1:私のAndroid Studioバージョンは0.2.13(最新)、Gradleの0.5 +

EDIT2:フルbuild.gradleは、私はあなたがsimple-xmlライブラリを追加する必要があります

 

    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フルbuild.gradleファイルのための私の編集2 – existenz31

答えて

1

問題が見つかりました。

私が期待していたように、それは0.5d +のプラグインでした。

gradleプラグイン0.6。+(Gradle 1.8)のAndroidスタジオ0.3.0で問題が修正されました。

しかし、私はAndroidのメーカー0.2.13とのGradleプラグイン0.5この方法で動作するアプリケーション製:GradleのプラグインはMavenの中央からライブラリをデプロイすることを拒否したよう

を、私はライブラリとの依存関係にダウンロード私のプロジェクトのlibディレクトリ。 プロジェクトのlibディレクトリにあるライブラリをローカルとして使用するようにプロジェクトをセットアップしました。この問題を回避するための

道順:

  1. (Mavenの中央)シンプル-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を選択してくださいライブラリとして追加コンテキストメニューを使用してライブラリをインポートする

  4. ビルドを変更します。このようなのGradle:

    依存関係{

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

    }

注グジェゴシ

55

を使用しますこの方法:

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 /ストリーム/イベント/ StartElement.class":コアクラス(Javaを

無分別または誤った使用方法*またはjavax。*) コアライブラリを構築していない場合。

IDE(Eclipseなど)を使用しているときに、アプリケーションのプロジェクトに というコアライブラリファイルが誤って挿入されていることがよくあります。 コアクラスを意図的に定義していないと思われる場合は、この が何が起こっているのかについての最も可能性の高い説明です。

しかし、 というネームスペースにクラスを定義しようとしている可能性があります。たとえば、 Android以外の仮想マシンプロジェクトから取得したものです。これは確かに の仕事ではありません。少なくとも、プラットフォームの将来のバージョンである とのアプリの互換性が危うくなります。また、多くの場合、合法性が疑問視されるのは です。

あなたは本当にコアライブラリ構築する場合 - その後、 「--core-ライブラリ」を使用 - だけ 適切で完全な仮想マシンの配布、アプリケーションのコンパイルとは対照的に、 の作成の一環として、このエラーメッセージを抑制するオプション。

"--core-library"を使用して実際に アプリケーションをビルドしている場合は、ある時点でアプリケーションがまだ構築または実行に失敗することに注意してください。たとえば、 の怒っている顧客のために、 がオペレーティングシステムをアップグレードすると、アプリケーションが機能しなくなることを発見してください。この の問題はあなたの責任です。

コアの パッケージにあるコードを正当に使用している場合は、 のコードをそのパッケージに再パッケージするのが一番簡単です。つまり、問題のクラスを独自のパッケージ 名前空間に移動します。つまり、コアクラス システムクラスと競合することはありません。 JarJarはこの努力のお手伝いをするツールです。 あなたがこれを行うことができないことが分かった場合、それは の経路が最終的に痛み、苦しみ、悲しみ、 と嘆きにつながることを示しています。

+0

あなたは依存関係の除外のために正しいです。私はbuild.gradleでライブラリを除外する必要がありました。この回避策は、私のプロジェクトのローカルディレクトリlibにダウンロードされたsimple-xmlライブラリを使用しているときにのみ機能しました....悲しいことに、 – existenz31

+0

最も有用な答え!わたしにはできる。 –

+0

gradle 0.12.2にアップデートするときに、この問題が発生し始めたばかりです。この勧告は魅力のように機能します。 –

5

によってmentionnedとしてそれ以外の場合は、Androidシステムとの競合を作成し、依存関係を含みませんAndroidでmavenを使用して同じエラーが発生しました。私は依存関係を修正し、すべてがうまくいった。それは単純な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

私には大いに役立ちます!ありがとうございました! –