Как получить более подробное сообщение об ошибке, чем «Ошибка: тип программы уже существует: <type>»? - PullRequest
0 голосов
/ 25 февраля 2019

Правильно, поэтому я хочу использовать Unirest на Android для быстрого тестирования, потому что он более легкий, чем, скажем, Volley.

(нужно запустить его на androidTest, потому что я хочу протестировать некоторые android-соответствующие функции)

Итак ...

androidTestImplementation 'com.mashape.unirest:unirest-java:1.4.9'

приводит к

java.lang.NoSuchFieldError: No field INSTANCE of type Lorg/apache/http/conn/ssl/AllowAllHostnameVerifier; in class Lorg/apache/http/conn/ssl/AllowAllHostnameVerifier; or its superclasses (declaration of 'org.apache.http.conn.ssl.AllowAllHostnameVerifier' appears in /system/framework/framework.jar:classes3.dex)
        at org.apache.http.conn.ssl.SSLConnectionSocketFactory.<clinit>(SSLConnectionSocketFactory.java:144)

Право, что угодно.Поэтому я немного погуглю и в итоге нахожу этот ответ здесь.

звучит достаточно просто ...

androidTestImplementation'org.apache.httpcomponents:httpclient-android:4.3.5'
androidTestImplementation('com.mashape.unirest:unirest-java:1.4.9'){
    exclude group: 'org.apache.httpcomponents', module:'httpclient'
}

, что дает мне

Ошибка: тип программы уже присутствует: org.apache.http.Consts

Итак, без exclude group: 'org.apache.httpcomponents', module:'httpclient' он дает мне

Error: Program type already present: org.apache.http.auth.AuthOption

Iя бы подумал, что мне «просто» придется исключать модули, пока я не исключу все, что могло бы привести к конфликту.

Но как мне узнать, что это за модули?

О, и нет, я не могу просто исключить всю группу

androidTestImplementation'org.apache.httpcomponents:httpclient-android:4.3.5'
androidTestImplementation('com.mashape.unirest:unirest-java:1.4.9'){
    exclude group: 'org.apache.httpcomponents'
}

Поскольку это приводит к

java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/http/impl/nio/reactor/DefaultConnectingIOReactor;
    at com.mashape.unirest.http.options.Options.refresh(Options.java:85)
    at com.mashape.unirest.http.options.Options.<clinit>(Options.java:46)
...