Javax контент недоступен
У меня есть ошибка во время выполнения, когда я пытаюсь запустить свое приложение для Android, из-за импорта этого пакета, который позволяет мне использовать Watson Services.
'com.ibm.watson.developer_cloud: Java-SDK:2.9.0'
Фактически, когда я использую что-то связанное с этим пакетом, появляется ошибка:
E/dalvikvm: Could not find class 'javax.naming.InitialContext', referenced from method com.ibm.watson.developer_cloud.util.CredentialUtils.getKeyUsingJNDI
и соответствующая трассировка стека:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: semantic.myapplication, PID: 29120
java.lang.VerifyError: com/ibm/watson/developer_cloud/util/CredentialUtils
at….
Я искал реальную проблему этой ошибки и обнаружил, что в файле "CredentialUtils.java", где появляется ошибка, эти три импорта не распознаются (не удается разрешить символы):
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
Я использую Android Studio и последнюю версию JDK (1.8.0.77). Эти java-файлы существуют, я их вижу, но по какой-то причине они недоступны: импорт каждого файла в javax.naming (а также других папок) невозможен.
Как я могу решить эту проблему? Я пытался импортировать файл.jar, включая классы javax.naming, но не работает. Есть ли способ сделать видимыми эти классы?
Любая помощь будет оценена. Спасибо!
1 ответ
Я думаю, что вы используете версию старше 2.7.1
, Я не могу воспроизвести вашу проблему, и я пробовал с различными конфигурациями, включая вашу. Убедитесь, что вы очистили свое рабочее пространство и получили последнюю версию библиотеки. В вашем build.gradle
у тебя должно быть:
compile 'com.ibm.watson.developer_cloud:java-sdk:2.9.0'
Вот коммит, который исправил вашу проблему. Исправление было выпущено в 2.7.1
версия.
Это то, что я сделал, и это сработало для меня:
Действия по использованию API Watson в Android:
- Скачайте и установите Android Studio
- Откройте Android Studio
File > New > New Project
,- Выберите имя и нажмите
next
,next
,next
а такжеFinish
В
<project-name>/app/build.gradle
добавлять:compile 'com.ibm.watson.developer_cloud:java-sdk:2.9.0'
В
MainActiviy.java
в концеonCreate(...)
добавлять:Thread thread = new Thread(new Runnable(){ @Override public void run() { try { SpeechToText service = new SpeechToText(); service.setUsernameAndPassword("<username>", "<password>"); System.out.println(service.getModels()); } catch (Exception e) { e.printStackTrace(); } } }); thread.start();
Запустите симулятор и посмотрите на консоль. Вы должны увидеть сообщение как
I/CredentialUtils: JNDI string lookups is not available.
и список моделей речи в текст.
I/System.out: [{ I/System.out: "name": "en-US_NarrowbandModel", I/System.out: "rate": 8000 I/System.out: }, { I/System.out: "name": "pt-BR_BroadbandModel", I/System.out: "rate": 16000 I/System.out: }, { I/System.out: .... more models here I/System.out: }, { I/System.out: "name": "en-US_BroadbandModel", I/System.out: "rate": 16000 I/System.out: }]