2016-03-27 10 views
0

引数として "java.io.Reader"を取ります。 java.io.Readerはインタフェースであり、インスタンス化できません。Jpype Pythonでオブジェクトをキャストする方法

だから、私はこのような一つのサブクラスを使用します。 にStringReader = jp.java.io.StringReader( "たTestString")

はどのようにするjava.io.Reader型ににStringReaderを変換することができますか?

このメソッドは暗黙のうちに行うことができないためです。

:私はこのエラーを得た

にIOException

のpublic static UserDictionaryオープン(リーダーリーダー) スロー:

txt= u'gfdgfdgddf' 
    StringReader = jp.JClass('java.io.StringReader')(txt) 
    StringReader.ready() #Ok works 
    userDicC= jp.JClass('org.apache.lucene.analysis.ja.dict.UserDictionary') 
    useDic= userDicC(StringReader) 

方法の詳細を:

EDITは:メソッドを使用しているとき、私は、このエラーメッセージが表示されます。

userDicC = java.jp.JClass( 'org.apache.lucene.analysis.ja.dict.UserDictionary') useDic = userDicC(StringReader)

line 84, in _javaInit 
    self.__javaobject__ = self.__class__.__javaclass__.newClassInstance(*args) 

    RuntimeError: No matching overloads found. at src\native\common\jp_method.cpp:121 
+0

なぜオブジェクトをキャストする必要があると思いますか?あなたが 'java.io.Reader'を必要とするメソッドに' StringReader'を渡すとどうなりますか? –

+0

エラーメッセージが表示されたので、 –

+0

そのエラーメッセージは何ですか?このメッセージを含めるには質問を編集してください。 –

答えて

0

コメントから、オブジェクトをまったくキャストすることに関連した問題ではないことが判明しました。メソッドpublic static UserDictionary open(Reader reader)を呼び出すために

、あなたはかつての行が原因のLucene-Kuromojiのバージョン5.5.0でUserDictionaryクラスは動作しません

useDic= userDicC.open(StringReader) 

でライン

useDic= userDicC(StringReader) 

を交換する必要がありますpublicコンストラクタは宣言しません。 (クラスはList<String[]>パラメータを受け取り、静的open方法がこれを呼び出すプライベートコンストラクタを持っています。)

紛らわしい

、などのLucene-Kuromojiのバージョン5.0.0のものと、このクラスの古いバージョン、を行います単一のReaderパラメータを取るコンストラクタを宣言します。私はあなたのコードがLucene-Kuromojiのそのバージョンで動作することを期待しています。

関連する問題