Dalvik не может найти класс внутри внешнего JAR через отражение
Я уже некоторое время делаю код отражения, но в последнее время проблема возникла только из-за внешних JAR-файлов. Здесь обсуждаются JAR-файлы, связанные с HTTPPost http://developer.android.com/reference/org/apache/http/client/methods/HttpPost.html чтобы я мог выполнить запрос POST
Я использую один и тот же IDE Eclipse для кодирования своего кода Java и кода Android в отдельных проектах.
В моем проекте Android я скопировал файлы JAR в папку /libs, и файлы JAR добавлены в зависимости Android.
В проекте Java я добавил зависимости в IDE, чтобы не возникало ошибок кодирования.
Для "компиляции" Java-проекта я использую следующие командные строки
javac -classpath android.jar;httpclient-4.1.2.jar;httpcore-4.1.2.jar;httpmime-4.1.2.jar MyReflectionClass.java
jar -cf MyReflectionClass.jar MyReflectionClass.java
dx --dex --output=classes.dex myreflectionclass.jar
Об ошибках не сообщается.
Эти шаги всегда работали нормально, когда мне до сих пор не требовались внешние JAR-файлы. Кажется, что первой строки недостаточно, чтобы "импортировать" JAR / аннотации (я не очень хорошо знаю эти термины)
Проект Android может загружать класс в проекте Java, и код Java выполняется до этой строки
MultipartEntity ent = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
где я получаю эту ошибку в Logcat
tag = dalvikvm
text = Could not find class 'org.apache.http.entity.mime.MultipartEntity', referenced from method MyReflectionClass.mymethod
Пожалуйста помоги!
1 ответ
В отличие от классов httpclient, классы httpmime не являются частью Android. Вы должны предоставить их самостоятельно (например, поместив их в папку libs/ вашего проекта Android).