0

Android プロジェクトでJava-WordNet インターフェイスを使用しようとしています。辞書などを開くための基本的なコードを作成することができます (ドキュメントの作業に示されているように)。これは、自分のプロジェクトで必要なものでもあります。ただし、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.これを解決する手がかりは大歓迎です。

4

1 に答える 1

1

エラーは JWI によるものではありません。Mac から Mac 以外のシステムにファイルをコピーすると、OS によってリソース フォーク ファイルが自動的に追加されます。「file1.xyz」という名前のファイル名がある場合、Mac OSX は「._file1.xyz」という名前で同じディレクトリにリソース フォークを追加しようとします。リソース フォークは、画面上にコンテンツ (フォント名、サイズなど) をレンダリングするのに役立つ一種のメタデータです。ほとんどの *nix タイプの OS では、「.」を含むすべてのファイル 名前の先頭にある が隠され、表示されなくなります。これらのファイルは、ディクショナリのロードが失敗する原因となっています。

すべてのディレクトリからファイルを削除する以外に、これを回避する方法はありません。これはレガシー Mac の問題です。

于 2013-11-06T19:57:42.507 に答える