当前位置: 首页 > 面试题库 >

从python使用Java库

楚瑞
2023-03-14
问题内容

我有一个python应用程序和java应用程序。python应用程序为java应用程序生成输入,并在命令行上调用它。

我敢肯定,对此必须有一个更优雅的解决方案。就像使用JNI从Java调用C代码一样。

有指针吗?(仅供参考,我是Python的新手)

澄清
(以一个较长的问题为代价:道歉)py应用程序(我不拥有)以许多配置文件的形式接受用户输入。然后,它会解释这些问题,并通过插件机制将服务器场转换为许多(隐藏的)工具。我正在寻找对旧版Java应用程序提供的功能的支持。

因此,从Java应用程序调用python应用程序没有意义,而且我无法在jython环境(在JVM上)中运行py应用程序。

由于没有明显的机制,我认为简单的CL调用是最好的解决方案。


问题答案:

抱歉,请重新处理该线程,但没有可接受的答案…

您也可以使用Py4J。头版上有一个示例和大量文档,但是从本质上讲,您只是从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的作者



 类似资料:
  • 问题内容: 从python调用Java的最佳方法是什么?(对我来说,jython和RPC不是一个选择)。 我听说过JCC:http : //pypi.python.org/pypi/JCC/1.9 一个用于从C / Python调用Java的C 代码生成器,但这需要编译所有可能的调用。我希望有另一个解决方案。 我听说过JPype:http ://jpype.sourceforge.net/ 教程:

  • 我需要从Java中调用一些Python代码。 我知道Jython存在,或者Java有自己的Python解释器。 问题是,所说的Python代码使用一些本机(C)编译代码,甚至在GPU上运行一些东西。 所以我可以把它分为两个问题: < Li > Jython或Java的Python解释器支持这个吗?也就是说,Python代码(当从Java调用时)将与所有的C和GPU部分一起运行,因此运行速度将与它独

  • 我想从java代码调用python并将参数传递给python中的函数。我已经在python中封装了一个函数。但问题是我还在python程序中导入了第三方库skLearning。当我调用测试程序并将值传递给python时,我能够运行代码。但是当我尝试在python代码中使用第三方库,例如skLearning和import时,我得到了以下错误。 我初始化了Python解释器类的对象,然后使用以下命令,

  • 问题内容: 我最近一直在Windows上使用Cygwin。我想使用Windows安装的Python,因此在测试期间,我使用而不是。 除打印外,这几乎可以完美地工作。当我从Cygwin运行Windows Python时,直到执行完成才输出输出。它可以通过explorer.exe或cmd.exe在Windows Python中正常运行,并且可以使用Cygwin安装的Python()在Cygwin中运行

  • 问题内容: 我有一个使用100%Java编写的大型现有代码库,但是我想在它的一些新部分中使用Python。我需要进行一些文本和语言处理,而我宁愿使用Python和类似NLTK的库来执行此操作。 我知道Jython项目,但这似乎代表了一种从Python内部使用Java及其库的方法,而不是相反的方式-我对此是否错? 如果没有,那么在Java和Python之间进行交互的最佳方法是什么,这样(理想情况下)

  • drops异常“JMSCMQ0001:WebSphere MQ调用失败,compcode为'2'('mqcc_failed')原因为'2035'('mqrc_not_authorized')” 当我尝试创建连接时 我不明白有什么问题。 我使用的是ibmmq lib9.0.2.0版本,但这段代码也不适用于7.5.0.1版本