Неправильная строка исключения - JWI на Android
Я пытаюсь использовать интерфейс Java-WordNet в проекте Android. Я могу сделать основной код для открытия словаря и т. Д. (Как указано в работе с документами), что также необходимо в моем собственном проекте. Тем не менее, я заметил, что иногда dict.open()
метод завершится с ошибкой во время выполнения с ошибкой, трассировка стека которой приведена ниже:
10-15 19:10:34.556: E/com.sriram.dict.EHDictionary@40516b00(16596): Run time exception caught.
10-15 19:10:34.576: W/System.err(16596): edu.mit.jwi.data.parse.ILineParser$MisformattedLineException: ��������Mac OS X �������� ������2����ᄚ����������¬������������������������������������������������������������������������ATTR;レ����¬������リ������U������������������������������������リ������U����com.apple.quarantine��0001;525b8927;Google\x20Chrome;774A992E-4B54-4DBA-AD26-44520094A014|com.google.Chrome��������������������������������������������������������������������������������������� < lots of these question marks>
��������������������������
10-15 19:10:34.576: W/System.err(16596): at edu.mit.jwi.data.parse.DataLineParser.parseLine(DataLineParser.java:234)
10-15 19:10:34.576: W/System.err(16596): at edu.mit.jwi.data.parse.DataLineParser.parseLine(DataLineParser.java:54)
10-15 19:10:34.576: W/System.err(16596): at edu.mit.jwi.data.FileProvider.createDataSource(FileProvider.java:481)
10-15 19:10:34.576: W/System.err(16596): at edu.mit.jwi.data.FileProvider.createSourceMap(FileProvider.java:431)
10-15 19:10:34.576: W/System.err(16596): at edu.mit.jwi.data.FileProvider.open(FileProvider.java:318)
10-15 19:10:34.576: W/System.err(16596): at edu.mit.jwi.DataSourceDictionary.open(DataSourceDictionary.java:92)
10-15 19:10:34.576: W/System.err(16596): at edu.mit.jwi.CachingDictionary.open(CachingDictionary.java:133)
10-15 19:10:34.576: W/System.err(16596): at com.sriram.dict.EHDictionary.initDict(EHDictionary.java:250)
10-15 19:10:34.576: W/System.err(16596): at
com.sriram.dict.EHDictionary.<init>(EHDictionary.java:50)
10-15 19:10:34.576: W/System.err(16596): at com.sriram.dict.EHTextView.initEHTextView(EHTextView.java:83)
10-15 19:10:34.576: W/System.err(16596): at com.sriram.dict.ContentHandler.onCreate(ContentHandler.java:84)
10-15 19:10:34.576: W/System.err(16596): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
10-15 19:10:34.576: W/System.err(16596): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
10-15 19:10:34.576: W/System.err(16596): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
10-15 19:10:34.576: W/System.err(16596): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
10-15 19:10:34.576: W/System.err(16596): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
10-15 19:10:34.576: W/System.err(16596): at android.os.Handler.dispatchMessage(Handler.java:99)
10-15 19:10:34.576: W/System.err(16596): at android.os.Looper.loop(Looper.java:123)
10-15 19:10:34.576: W/System.err(16596): at android.app.ActivityThread.main(ActivityThread.java:3691)
10-15 19:10:34.576: W/System.err(16596): at java.lang.reflect.Method.invokeNative(Native Method)
10-15 19:10:34.576: W/System.err(16596): at java.lang.reflect.Method.invoke(Method.java:507)
10-15 19:10:34.576: W/System.err(16596): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:847)
10-15 19:10:34.576: W/System.err(16596): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605)
10-15 19:10:34.576: W/System.err(16596): at dalvik.system.NativeStart.main(Native Method)
10-15 19:10:34.581: W/System.err(16596): Caused by: java.lang.NumberFormatException: unable to parse '��������Mac' as integer
10-15 19:10:34.581: W/System.err(16596): at java.lang.Integer.parse(Integer.java:383)
10-15 19:10:34.581: W/System.err(16596): at java.lang.Integer.parseInt(Integer.java:372)
10-15 19:10:34.581: W/System.err(16596): at java.lang.Integer.parseInt(Integer.java:332)
10-15 19:10:34.581: W/System.err(16596): at edu.mit.jwi.data.parse.DataLineParser.parseLine(DataLineParser.java:95)
10-15 19:10:34.581: W/System.err(16596): ... 23 more
И код:
try {
dict.open();
if(VERBOSE) Log.v(this.toString(), "Dictionary open.");
wns = new WordnetStemmer(dict);
} catch(IOException e) {
Log.e(this.toString(), "IOException in opening dictionary.");
e.printStackTrace();
} catch(RuntimeException e1) {
Log.e(this.toString(), "Run time exception caught.");
e1.printStackTrace();
}
Похоже, что приведенная выше ошибка возникает в случаях, когда словарь загружается из репозитория, который я сделал доступным. Думая, что это может быть случай потери чего-либо при загрузке, я добавил контрольную сумму (с MD5) так, чтобы при каждой загрузке приложения эта контрольная сумма выполнялась, а затем сравнивалась со списком контрольных сумм для различных файлов в словарь (из файлов, о которых известно, что не дают этой ошибки). Контрольная сумма совпадает каждый раз.
Мои вопросы):
1. Что значит???? в вышеприведенной ошибке указывать? Есть ли способ, которым я могу добраться до текста этого?
2. Любые подсказки по решению этой проблемы будут приветствоваться.
1 ответ
Ошибка не из-за JWI. Копирование файлов с Mac в систему, не относящуюся к Mac, заставляет ОС автоматически добавлять файлы ветвления ресурса. Если у вас есть имя файла с именем "file1.xyz", Mac OSX попытается добавить ветку ресурса в тот же каталог с именем "._file1.xyz". Форк ресурса - это своего рода метаданные, которые помогают отображать содержимое на экране (имя шрифта, размер и т. Д.). На большинстве операционных систем * nix любой файл с символом "." в начале имя будет скрыто, в результате чего его не будет видно. Эти файлы являются причиной сбоя загрузки словаря.
Нет другого пути, кроме как удалить файлы из каждого отдельного каталога. Это устаревшая проблема Mac.