как я понял отсюда https://github.com/google/volley/wiki/Migrating-from-Apache-HTTP volley 1.1 отбросил обязательную зависимость от org.apache.http .И
"Большинство приложений, использующих HurlStack или Volley # newRequestQueue с minSdkVersion, установленным в 9 или выше, не должны предпринимать никаких действий, кроме удаления объявления useLibrary 'org.apache.http.legacy' из вашегофайл build.gradle, если он есть. "
Я нигде не использую org.apache.http, но когда я пытаюсь выполнить Volley.newRequestQueue(context.getApplicationContext())
или новый HurlStack()
в модульном тесте, я получаю:
java.lang.NoClassDefFoundError: org/apache/http/StatusLine
во время выполнения.Проверяя класс HurlStack, я вижу, что он наследуется от BaseHttpStack, который явно все еще зависит от org.apache.http
import org.apache.http.ProtocolVersion;
import org.apache.http.StatusLine;
import org.apache.http.entity.BasicHttpEntity;
import org.apache.http.message.BasicHeader;
import org.apache.http.message.BasicHttpResponse;
import org.apache.http.message.BasicStatusLine;
Итак, я не получил его, должен ли я включить org.apache.http, если используется залп с уровнем API> 23 или нет?
Обходной путь:
Если я включу это в build.gradle, тесты будут работать нормально:
testImplementation "org.apache.httpcomponents:httpclient:4.5.5"
Примечание:
Это не общий вопрос о NoClassDefFoundError, он касается именно того, что Volley выдает это исключение, когда в инструкциях (см. Ссылку на сообщение) говорится, что это не следует.