Как загрузчик классов выбирает между несколькими классами с одинаковым пакетом и именем - PullRequest
1 голос
/ 07 июля 2011

Я пишу проект Android, который должен использовать Apache HttpClient с версии 4.1 проекта. Я включил это в папку libs проекта в виде jar-файла. Мой вопрос заключается в том, как загрузчик классов узнает об использовании класса версии 4 вместо версии 3, поставляемой платформой, поскольку у них обоих одинаковое имя пакета и один и тот же оператор импорта?

В прошлом я сталкивался с проблемой при использовании библиотеки GSON, которая конфликтовала с библиотекой, включенной в HTC , смотрите здесь и удивляетесь, как эти ситуации различаются (возможно, потому что gson использует отражение?)? Любая информация будет здорово, спасибо.

Ответы [ 3 ]

1 голос
/ 07 июля 2011

HttpClient 4 и HttpClient 3 - две абсолютно разные библиотеки.HttpClient 4 полностью переписан и был разработан для соответствия многим RFC .

HttpClient 4 не обратно совместим с HttpClient 3.

1 голос
/ 07 июля 2011

Загрузчик классов сначала просматривает свои классы, а затем запрашивается родительский загрузчик классов.Проблема может заключаться в том, что родительский загрузчик классов имеет исправленный класс, который работает в Android, а версия, которую вы предоставляете, - нет.Это может привести к проблемам.

Короче говоря: загрузчик классов хранится в дереве, а когда класс не найден, запрашивается родительский загрузчик классов.(пользовательские загрузчики классов могут делать что-то другое!)

0 голосов
/ 07 июля 2011

Я не знаю об Android, но если он похож, например, на JBoss, то у вас есть пользовательские загрузчики классов, которые сначала смотрят в путь к классам приложения, и если там ничего не найдено, они проверяют системный путь к классам. Как я уже сказал, я не уверен, что то же самое относится и к Android.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...