我有一个 python 应用程序和 java 应用程序。 python 应用程序为 java 应用程序生成输入并在命令行上调用它。
我确信一定有一个更优雅的解决方案;就像使用 JNI 从 Java 调用 C 代码一样。
有什么指点吗?
(仅供参考,我是 Python 新手)
澄清(以一个很长的问题为代价:抱歉)
py 应用程序(我不拥有)以多个配置文件的形式接受用户输入。然后,它通过插件机制将这些和农场工作解释为许多(隐藏)工具。我希望添加对旧版 Java 应用程序提供的功能的支持。
因此,从 java 应用程序调用 python 应用程序是没有意义的,而且我无法在 jython 环境(在 JVM 上)中运行 py 应用程序。
由于没有明显的机制,我认为简单的 CL 调用是最好的解决方案。
很抱歉复活该线程,但没有接受的答案......
你也可以使用Py4J http://py4j.sourceforge.net/index.html。首页上有一个示例和大量文档,但本质上,您只需从 Python 代码中调用 Java 方法,就像它们是 Python 方法一样:
>>> from py4j.java_gateway import JavaGateway
>>> gateway = JavaGateway() # connect to the JVM
>>> java_object = gateway.jvm.mypackage.MyClass() # invoke constructor
>>> other_object = java_object.doThat()
>>> other_object.doThis(1,'abc')
>>> gateway.jvm.java.lang.System.out.println('Hello World!') # call a static method
与 Jython 不同,Py4J 在 Python VM 中运行,因此它始终与最新版本的 Python 保持“最新”,并且您可以使用在 Jython 上运行不佳的库(例如 lxml)。通信是通过套接字而不是 JNI 完成的。
免责声明:我是 Py4J 的作者
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)