Android Studio - конфликты между android.jar и rt.jar

Я разрабатываю приложение для Android с Android Studio 2.1.2.

В одном из классов внешней библиотеки (в частности, ватсонской библиотеки IBM Bluemix, com.ibm.watson.developer_cloud:java-sdk:3.0.1) Мне нужно импортировать эти три класса:

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

Проблема заключается в том, что эти импорта невозможны (невозможно разрешить символы). Это мой сценарий:

android.jar

rt.jar

Когда я пытаюсь импортировать пакет javax, я вижу только те, которые находятся в android.jar (crypto, microedition, net, security, sql, xml). Я не вижу те, которые находятся в rt.jar, поэтому я не могу использовать классы, которые присутствуют в пакете javax.naming, например.

Я пытался явно добавить зависимость таким образом

compile files ('C:/Program Files/Java/jdk1.8.0_77/jre/lib/rt.jar')

но я думаю, что это не правильно, на самом деле он компилируется, но я не могу запустить на устройстве из-за этой ошибки:

Error:Execution failed for task ':app:transformClassesWithMultidexlistForDebug'.
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.8.0_77\bin\java.exe'' finished with non-zero exit value 1

Это та же проблема, с которой я столкнулся в этом посте: контент Javax недоступен, но на этот раз проблема не зависит от конкретной библиотеки Watson, которая запрашивает импорт.

Как сделать эти классы видимыми, чтобы приложение работало?

1 ответ

Решение

Вы не можете использовать rt.jar с приложением Android (и частично совпадает с android.jar). Это библиотека времени выполнения для настольной JRE, а не Android. Пожалуйста, обратитесь к справочнику по API Android для получения списка доступных пакетов (вы заметите, что javax.naming не один из них.

Очевидно, что IBM Framework не совместима с Android.

Моя предыдущая оценка является неточной, так как README четко заявляет, что это:

Библиотека поддерживает Android 2.3 и выше. Для Java минимальное требование составляет 1,7. Это зависит от OkHttp и GSON.

Источник.

Однако я подозреваю, что проблема связана с неверно настроенными учетными данными (см. Здесь), в результате чего библиотека пытается выполнить поиск JNDI в качестве запасного варианта (который определенно не поддерживается Android).

Другие вопросы по тегам