gpt4 book ai didi

java - 如何使用 JPype 在 Python 中导入用户构建的 jar?

转载 作者:太空狗 更新时间:2023-10-30 01:34:40 25 4
gpt4 key购买 nike

我在 Python 中使用 JPype,因此我可以调用 Java 函数。我在导入自己的 jar 文件时遇到问题。

我有这个 jar :/home/di/eclipse_plugins/plugins/org.eclipse.birt.report.engine_4.2.1.v20120820.jar

org.eclipse.birt.report.engine.api 包中有一个 EngineConfig 类定义。我正在尝试实例化并使用我在那个 jar 里的这个类。在常规 Java 中,这就是我想要的:

import org.eclipse.birt.report.engine.api.EngineConfig;

EngineConfig config = new EngineConfig();
config.setLogConfig("/home/di/logs");

我在 Python 中有这个:

import jpype
from jpype import *

jvmPath = jpype.getDefaultJVMPath()
jpype.startJVM(jvmPath, "-Djava.class.path=/home/di/eclipse_plugins/plugins/*.jar")
engineConfig = JPackage("org").eclipse.birt.report.engine.api.EngineConfig
engineConfig.setLogConfig("/home/di/logs")
jpype.shutdownJVM()

但是,当我运行它时,出现了这个错误:

Traceback (most recent call last):
File "test.py", line 15, in <module>
engineConfig.setLogConfig()
File "/usr/lib64/python2.6/site-packages/jpype/_jpackage.py", line 53, in __call__
raise TypeError, "Package "+self.__name+" is not Callable"
TypeError: Package org.eclipse.birt.report.engine.api.EngineConfig.setLogConfig is not Callable

最佳答案

我无法重现完全相同的错误(相反,我得到了“RuntimeError:找不到匹配的重载”)。不过,我在您的 Python 代码中发现了一个问题:

engineConfig = JPackage("org").eclipse.birt.report.engine.api.EngineConfig

您在 engineConfig 中得到的是一个类。

setLogConfig() 不是静态方法,所以必须先实例化EngineConfig类:

# Get EngineConfig class
EngineConfig = JPackage("org").eclipse.birt.report.engine.api.EngineConfig
# Instantiate EngineConfig
engineConfig = EngineConfig()
# Call method
engineConfig.setLogConfig("/home/di/logs")

关于java - 如何使用 JPype 在 Python 中导入用户构建的 jar?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15959004/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com