我正在运行一个Python项目,但是有一个库(sikuli)可以更容易地在Java中使用。我想知道是否有某种方法可以授予我的python程序访问Java类的权限,并且JVM以某种方式解释了Python对Java类的调用。
另一个选择是使用我的所有方法创建一个.jar
,然后在Python中运行带有.subprocess
命令的参数的jar,这有点乱,但也会得到这份工作完成。
答案 0 :(得分:3)
看看Pyjnius。它允许您将Java类作为Python对象导入,并以透明的pythonic方式公开其方法。
基本示例:在JAR文件中使用类
java_resource_jar_path = "/path/to/jar/directory"
jnius_config.set_classpath(java_resource_jar_path)
from jnius import autoclass
# from jnius import JavaException
# You might have to import JavaException if your class happens to throw exceptions
TheJavaClass = autoclass(path.in.the.jar.file.to.class) # No ".class", no parentheses
python_instance_of_the_Java_class = TheJavaClass()
此时,python_instance_of_the_Java_class
具有Java类的所有方法。
答案 1 :(得分:0)
Jpype1允许您在类路径中使用自定义jar启动JVM,这允许您通过Python虚拟使用任何第三方Java库。
import jpype
jpype.startJVM(jpype.getDefaultJVMPath(), '-ae', "-Djava.class.path=./MyLibrary.jar")
pkg = jpype.JPackage('com').site.myclasses
javaobj = pkg.MyClass()
javaobj.javaMethod()