簡體   English   中英

嘗試使用koush / ion獲取JSON並獲取DexException

[英]Trying to get JSON with koush/ion and get a DexException

我正在使用koush / ion庫,該庫用於從URL獲取JSON,問題是當我嘗試運行我的應用程序時會拋出該錯誤

Error:Execution failed for task ':app:dexDebug'.
com.android.ide.common.internal.LoggedErrorException: Failed to run command:
/Applications/Android Studio.app/sdk/build-tools/android-4.4W/dx --dex --num-threads=4 --output 
    /Users/Ger/Desktop/Slide/app/build/intermediates/dex/debug 
 /Users/Ger/Desktop/Slide/app/build/intermediates/classes/debug 
 /Users/Ger/Desktop/Slide/app/build/intermediates/dependency-cache/debug 
 /Users/Ger/Desktop/Slide/app/build/intermediates/pre-dexed/debug/androidasync-1.3.8-a258b3b9f5350460cf9a1a47d3844ac30e9c5eba.jar 
 /Users/Ger/Desktop/Slide/app/build/intermediates/pre-dexed/debug/gson-2.2-3174cdb2bcc21df781020dd287f6d8f9b30fbcf4.jar
  /Users/Ger/Desktop/Slide/app/build/intermediates/pre-dexed/debug/gson-2.3-2c927fa37b669aaa0ff9991dd7c990e2d88a7487.jar 
 /Users/Ger/Desktop/Slide/app/build/intermediates/pre-dexed/debug/ion-1.3.8-df2772cd07adc55daba28b3d0ce1374cf5a4edd5.jar
  /Users/Ger/Desktop/Slide/app/build/intermediates/pre-dexed/debug/support-v4-18.0.0-2484d88715cbcdaf306e7f8449d6546e84c1520d.jar
  Error Code:
    2
  Output:
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define Lcom/google/gson/JsonSerializer;
    at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:594)
    at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:552)
    at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:533)
    at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:170)
    at com.android.dx.merge.DexMerger.merge(DexMerger.java:188)
    at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:439)
    at com.android.dx.command.dexer.Main.runMonoDex(Main.java:287)
    at com.android.dx.command.dexer.Main.run(Main.java:230)
    at com.android.dx.command.dexer.Main.main(Main.java:199)
    at com.android.dx.command.Main.main(Main.java:103)

這是我的代碼:

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.koushikdutta.async.future.FutureCallback;
import com.koushikdutta.ion.Ion;

public class NuevosEpisodios extends Activity {

String resultado = "A";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.temporada);

    TextView tv = (TextView) findViewById(R.id.descripcion_temp);
    Ion.with(NuevosEpisodios.this)
            .load("http://example.com/thing.json")
            .asJsonObject()
            .setCallback(new FutureCallback<JsonObject>() {
                @Override
                public void onCompleted(Exception e, JsonObject result) {
                    // do stuff with the result or error
                    Gson gson = new Gson();
                    resultado = gson.toJson(result);
                }
            });

    tv.setText(resultado);
}
}

我已經看到了許多解決此問題的答案,但是沒有人為我工作,請幫幫我,我的lib文件夾中有gson-2.2和koush / ion jar,它們都在build gradle中編譯:

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:support-v4:18.0.+'
compile 'com.koushikdutta.ion:ion:1.+'
compile files('libs/gson-2.2.jar')
}

提前致謝!

當我在測試項目中復制您的dependencies塊時,我沒有收到您的錯誤。 我認為您的libs目錄中有一個額外的jar文件,這引起了問題。 您的構建文件中的以下語句:

compile fileTree(dir: 'libs', include: ['*.jar'])

使其自動獲取放置在該目錄中的所有.jar文件,因此請查看是否有不需要的文件。 無論如何,使用該通配符include,此語句是多余的:

compile files('libs/gson-2.2.jar')

另外,您可以像使用com.koushikdutta.ion:ion依賴項一樣自動下載並管理GSON的jar,而不是將其手動放入您的libs目錄中:

compile 'com.google.code.gson:gson:2.2'

該庫的版本比2.2高。 您可能要考慮升級。 http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22com.google.code.gson%22%20AND%20a%3A%22gson%22

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM