2024-05-19 00:21:15 发布
网友
我有一个jar格式的java库,可以用来从文件(excel、xml等)中提取数据。因为它在java中,所以只能在java应用程序中使用。但是我也需要同样的库用于python项目。 我尝试过py4j等,它从jvm获取对象。但是这个库不是可执行的,不会被“运行”。我已经检查过Jython,但是我需要从Python项目访问这个库。 我曾考虑过使用自动化的java到python转换器,但我认为这是最后的手段。在
请给我一些建议。在
在Python发出通知之前,您可以使一个单类java程序的线程永远不会结束。在
这样,lib就会保存在内存中,并且可以从Python程序访问。在
此类可以如下所示(添加所需的lib import/init):
public class TestPy { private Thread thread; public void die() { synchronized (thread) { thread.interrupt(); } } public TestPy() { thread = new Thread(){ public void run() { try { while (!Thread.interrupted()) { Thread.sleep(500); } } catch (InterruptedException e) { Thread.currentThread().interrupt(); } } }; thread.start(); } public static void main(String[] args) { TestPy tp = new TestPy(); GatewayServer server = new GatewayServer(tp); server.start(); } }
您必须启动java程序,使用lib,然后使用die()方法在Python中终止java程序:
我还没有学会如何通过java构造函数在jar文件中创建java类的新实例,但我意外地发现,使用任何java静态方法访问py2j中的java对象都非常容易
步骤1:从https://pypi.python.org/pypi/py4j下载py4j zip文件。“py4j0.10.0.jar”在zip文件中。在
步骤2:安装py4j
pip install 'D:\Downloads\py4j-0.10.0.zip'
第3步:添加py4j0.10.0.jar和_使用.jar(如下面示例中的owlapi-distribution-3.5.0.jar)在eclipse项目中构建路径
第四步:创建添加应用程序.java,并复制粘贴添加应用程序.java{并在^运行应用程序}添加应用程序.java在
第五步:运行后附加应用程序.javapython文件中的一个测试示例:
控制台上的结果是:
(5, 0) 6 abcIRi = fewf#fe abcIRI.getFragment() = fe
您可以编写一个简单的命令行Java程序来调用库并以Python中可以读取的格式保存结果,然后可以使用os.system从Python调用该程序。在
os.system
另一个选择是找到具有与Java库相同功能的Python库:您可以在Python中读取excel、xml和其他文件,这不是问题。在
在Python发出通知之前,您可以使一个单类java程序的线程永远不会结束。在
这样,lib就会保存在内存中,并且可以从Python程序访问。在
此类可以如下所示(添加所需的lib import/init):
您必须启动java程序,使用lib,然后使用die()方法在Python中终止java程序:
^{pr2}$我还没有学会如何通过java构造函数在jar文件中创建java类的新实例,但我意外地发现,使用任何java静态方法访问py2j中的java对象都非常容易
步骤1:从https://pypi.python.org/pypi/py4j下载py4j zip文件。“py4j0.10.0.jar”在zip文件中。在
步骤2:安装py4j
第3步:添加py4j0.10.0.jar和_使用.jar(如下面示例中的owlapi-distribution-3.5.0.jar)在eclipse项目中构建路径
第四步:创建添加应用程序.java,并复制粘贴添加应用程序.java{并在^运行应用程序}添加应用程序.java在
第五步:运行后附加应用程序.javapython文件中的一个测试示例:
^{pr2}$控制台上的结果是:
您可以编写一个简单的命令行Java程序来调用库并以Python中可以读取的格式保存结果,然后可以使用
os.system
从Python调用该程序。在另一个选择是找到具有与Java库相同功能的Python库:您可以在Python中读取excel、xml和其他文件,这不是问题。在
相关问题 更多 >
编程相关推荐