我正在运行一个Python项目,但是有一个库(sikuli)加载起来更容易在Java中使用。我想知道是否有某种方法可以授予我的python程序访问Java类的权限,并以某种方式让JVM解释从Python对Java类的调用。在Python项目中运行Java类
另一种方法是让我所有的方法.jar
,然后只需运行与Python中的.subprocess
命令,这是一个有点混乱,但也将完成这项工作参数的罐子。
我正在运行一个Python项目,但是有一个库(sikuli)加载起来更容易在Java中使用。我想知道是否有某种方法可以授予我的python程序访问Java类的权限,并以某种方式让JVM解释从Python对Java类的调用。在Python项目中运行Java类
另一种方法是让我所有的方法.jar
,然后只需运行与Python中的.subprocess
命令,这是一个有点混乱,但也将完成这项工作参数的罐子。
看看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类的所有方法。
谢谢,我来看看。在独立的java类中,我将如何担心导入sikuli-java.jar?在java中,我将它添加到项目库中,但是如何在python通过pyjnius引用的独立.java文件中执行此操作? – k9b
@ k9b我添加了一个示例,向您展示如何使用JAR文件。 – HugoMailhot
非常感谢。意义非凡! – k9b
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()
我不认为jar选项是'凌乱'。阅读本文:http://baojie.org/blog/2014/06/16/call-java-from-python/ – alfasin
[从Python调用Java]的可能重复(http://stackoverflow.com/questions/3652554/调用-java-from-python) – alfasin