使用python中的java库(python wrapper for java library)

2024-05-19 00:21:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个jar格式的java库,可以用来从文件(excel、xml等)中提取数据。因为它在java中,所以只能在java应用程序中使用。但是我也需要同样的库用于python项目。 我尝试过py4j等,它从jvm获取对象。但是这个库不是可执行的,不会被“运行”。我已经检查过Jython,但是我需要从Python项目访问这个库。 我曾考虑过使用自动化的java到python转换器,但我认为这是最后的手段。在

请给我一些建议。在


Tags: 数据项目对象应用程序手段格式xmljvm
3条回答

在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程序:

^{pr2}$

我还没有学会如何通过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文件中的一个测试示例:

^{pr2}$

控制台上的结果是:

(5, 0)
6
abcIRi = fewf#fe
abcIRI.getFragment() = fe

您可以编写一个简单的命令行Java程序来调用库并以Python中可以读取的格式保存结果,然后可以使用os.system从Python调用该程序。在

另一个选择是找到具有与Java库相同功能的Python库:您可以在Python中读取excel、xml和其他文件,这不是问题。在

相关问题 更多 >

    热门问题