在Python项目中运行Java类

时间:2015-10-05 18:13:11

标签: java python

我正在运行一个Python项目,但是有一个库(sikuli)可以更容易地在Java中使用。我想知道是否有某种方法可以授予我的python程序访问Java类的权限,并且JVM以某种方式解释了Python对Java类的调用。

另一个选择是使用我的所有方法创建一个.jar,然后在Python中运行带有.subprocess命令的参数的jar,这有点乱,但也会得到这份工作完成。

2 个答案:

答案 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()