从python调用java的最佳方法是什么?(jython和RPC不是我的选择).
我听说过JCC:http://pypi.python.org/pypi/JCC/1.9 一个C++代码生成器,用于从C++/Python调用Java但是这需要编译每个可能的调用; 我更喜欢另一种解决方案.
我听说过JPype:http ://jpype.sourceforge.net/ tutorial:http://www.slideshare.net/onyame/mixing-python-and-java
import jpype
jpype.startJVM(path to jvm.dll, "-ea")
javaPackage = jpype.JPackage("JavaPackageName")
javaClass = javaPackage.JavaClassName
javaObject = javaClass()
javaObject.JavaMethodName()
jpype.shutdownJVM()
Run Code Online (Sandbox Code Playgroud)
这看起来像我需要的.但是,最后一个版本是从2009年1月开始的,我看到人们无法编译JPype.
JPype是一个死的项目吗?
还有其他选择吗?
问候,大卫
我最近一直在使用 jpype 与一些使用 python 的 java 代码集成,并且没有遇到任何真正的问题。我现在尝试在新系统上设置我的堆栈,但遇到了困难。
我正在运行 32 位 Python 3.6.5 和 32 位 Oracle Java 1.8 update 171。Python 和 jpype 已使用 conda ( conda create -n venv -c conda-forge python jpype1 arrow) 安装,并且
jpype.getDefaultJVMPath()返回预期路径 ( C:\Program Files (x86)\Java\jre1.8.0_171\bin\client\jvm.dll),但是会引发异常,指出找不到模块。下面是 python 控制台的输出。
Python 3.6.5 | packaged by conda-forge | (default, Apr 6 2018, 16:13:16) [MSC v.1900 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import jpype
>>> import os
>>> …Run Code Online (Sandbox Code Playgroud)