如何在Jpype Python

时间:2016-03-27 10:11:06

标签: java python casting jpype

我有一个方法需要:" java.io.Reader"作为论点 java.io.Reader是一个接口,无法实现。

所以,我使用这样一个子类: StringReader = jp.java.io.StringReader(" teststring")

如何将StringReader转换为java.io.Reader类型?

因为这种方法不能完全做到。

编辑:使用方法时收到此错误消息:

   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)

方法详情:        public static UserDictionary open(读者阅读器)                            抛出IOException

我收到了这个错误:

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

1 个答案:

答案 0 :(得分:0)

根据评论,结果表明问题与投射对象无关。

要调用方法public static UserDictionary open(Reader reader),您需要替换

useDic= userDicC(StringReader)

useDic= userDicC.open(StringReader)

前一行不起作用,因为在Lucene-Kuromoji的5.5.0版中,UserDictionary类声明没有公共构造函数。 (该类有一个私有构造函数,它接受List<String[]>参数,静态open方法调用它。)

令人困惑的是,此类的旧版本(例如Lucene-Kuromoji 5.0.0版本中的)声明了一个带有单个Reader参数的构造函数。我希望你的代码可以使用Lucene-Kuromoji的那个版本。