3
我有一個java門面類我試圖從python訪問,所以我決定使用JPype
。我的門面類只有一個構造函數(無默認值)四ARGSJPype將參數傳遞給Java
public facade(String a, String b, List<String> c, List<String> d){
...
}
我似乎無法初始化類的新實例時,爲了獲得正確的類型。我所嘗試的一切給出了相同的錯誤:
File ".../main.py", line 34, in __init__
facadeinstance = Facade(jpype.JString(s1), jpype.JString(s2),jpype.JArray(jpype.java.lang.String, 1)(s3), jpype.JArray(jpype.java.lang.String, 1)(s4))
File "/usr/local/lib/python2.7/dist-packages/jpype/_jclass.py", line 79, in _javaInit
self.__javaobject__ = self.__class__.__javaclass__.newClassInstance(*args)
RuntimeError: No matching overloads found. at src/native/common/jp_method.cpp:121
我知道JPype
正在工作。我已經嘗試了幾種包裝的組合,以正確的形式獲取數據,但沒有運氣。
相關代碼:
import jpype
s1 = "something"
s2 = "something else"
s3 = ["something in a list"]
s4 = ["Something else in a list"]
jpype.startJVM(jpype.getDefaultJVMPath(), "-Djava.class.path=" + JavaJarDir)
myLib = jpype.JPackage('myLib')
Facade = myLib.Facade # class loads fine, resources printed to stdout
# The error occurs on the next line
FacadeInstance = Facade(jpype.JString(s1), jpype.JString(s2), jpype.JArray(jpype.java.lang.String, 1)(s3), jpype.JArray(jpype.java.lang.String, 1)(s4))
jpype.shutdownJVM()
我不知道蟒蛇或jpype的事情,但:你確定'JArray(的jstring)'是正確的事情'清單'?聽起來像它會代表'String []' –
zapl
好問題。正如我所說的,我嘗試了幾個東西,包括沒有包裝的東西(例如'Facade(s1,s2,s3,s4)'),以及用JPype處理java接口的方式實現了一些東西。如果有人有這方面的經驗,請讓我知道。 – bnjmn
@bnjmn您可以使用Jpype來分享一個從Python執行jar類的函數的工作示例。我無法找到一個工作示例,嘗試了幾個選項但失敗,出現錯誤「不可調用」 – Sankalp