当前位置:  开发笔记 > 编程语言 > 正文

使用python中的java库

如何解决《使用python中的java库》经验,为你挑选了4个好方法。

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

我相信必须有一个更优雅的解决方案; 就像使用JNI从Java调用C代码一样.

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

澄清(以长期问题为代价:道歉)py app(我不拥有)以多个配置文件的形式获取用户输入.然后它通过插件机制将这些和农场工作转移到许多(隐藏的)工具上.我希望添加对旧版Java应用程序提供的功能的支持.

因此从java应用程序调用python应用程序是没有意义的,我无法在jython环境(在JVM上)上运行py app.

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



1> Barthelemy..:

很抱歉要重新确认该帖子,但没有接受答案......

你也可以使用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的作者



2> Dave Ray..:

看看Jython.它有点像JNI,但用Python代替C,即你可以用Java调用Python,反之亦然.目前还没有完全清楚你要做什么,或者为什么你现在的方法不是你想要的.



3> Blauohr..:

将Java代码包装在Container(Servlet/EJB)中.

所以你不要在vm-startup中浪费时间,而是要更加注重服务.

对于包装你可以使用jython(只有熟悉python才有意义)

选择python和java可以使用的通信协议:

json(见www.json.org)

rmi(Python:JPype)

休息

SOAP(仅适用于勇敢者)

选择您或您的合作伙伴所熟悉的东西!



4> Stéphane Bon..:

如果您真的想在Java进程中嵌入Java应用程序,请查看JPype.它通过JNI提供对Java的访问.

推荐阅读
无名有名我无名_593
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有