Неправильная строка исключения - 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.

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