Android Studio WordNet Dictionary

94
10

Я пробовал использовать JWI-библиотеку для WordNet, но у меня всегда есть IOException, несмотря на то, что вы его поймали. Словарь не открывается.

    wnhome = "C:/Program Files (x86)/WordNet/2.1";
path = wnhome + File.separator + "dict";
try {
url = new URL("file", null, path);
} catch (MalformedURLException e) {
e.printStackTrace();
}

IDictionary dict = new Dictionary(url);
try {
dict.open();
} catch (IOException ex) {
textView.setText("Failed");
}

textView.setText("" + dict.isOpen());
// look up first sense of the word "dog"
IIndexWord idxWord = dict.getIndexWord("dog", POS.NOUN);
IWordID wordID = idxWord.getWordIDs().get(0);
IWord word = dict.getWord(wordID);
textView.setText("Id = " + wordID);
textView.setText("Lemma = " + word.getLemma());
textView.setText("Gloss = " + word.getSynset().getGloss());

Странная сторона этого - эти коды отлично работают на Netbeans.

спросил(а) 2017-08-19T10:25:00+03:00 2 года, 10 месяцев назад
1
Решение
93

На вашем компьютере это работает отлично. URL-адрес указывает на местоположение на вашем компьютере, где он установлен.

тем не мение

Если вы попытаетесь запустить это на Android, iOS (некоторые кросс-платформенные инструменты позволяют ios dev на Java) либо на реальном устройстве, либо в эмуляторе, вы ссылаетесь на внутреннюю систему другого устройства, поэтому он не может найти файл и выдает исключение. Это исключение является исключением FileNotFoundException. Когда я пишу это, вы еще не добавили свой стек, но я могу гарантировать, что это исключение FileNotFOundException. Вы ссылаетесь на свой компьютер, а не на Android-устройство. У вас есть два варианта решения этой проблемы:

    Загрузите словарь Wordnet в начало приложения (и, конечно же, добавьте специфическую для Android загрузку) Выполнять вызовы на сервер, на котором доступен словарь Wordnet (Это допустимо только в том случае, если Wordnet имеет онлайн-API). Используйте API Wordnet.

Если бы я запустил этот код на своем компьютере, я получил бы FNFE, так как у меня не было Wordnet на моем компьютере. Если wordnet находится в любой другой установке, то такое же исключение.

Вы написали, что получаете IOException, но исключение FileNotFOundException приводит к исключению IOException. Столбец может выглядеть так:

caused by IOException:
at
at
so on
caused by FileNotFoundException
at
......

FNFE приводит к исключению IOException. FNFE - это тип IOException (FileNotFoundException расширяет IOException)

TL: DR;

Ваше Android-устройство не может получить доступ к установке вашего компьютера в wordnet, поэтому оно выдает FNFE, что приводит к исключению IOException (проблема верхнего уровня, так же как NullPointer может отображать исключение RuntimeException в верхней части stacktrace, а затем добавить часть NPE дальше вниз )

Вам нужно получить доступ к установке Wordnet на Android-устройстве, либо используя сервер, либо загрузив его после установки приложения

ответил(а) 2017-08-19T12:18:00+03:00 2 года, 10 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема