jpype是一个在python的包,可以让python便捷的调用Java代码,具体使用过程现在已经有了很多的内容,此处不再赘述,本文仅分享一个在实际使用中出现的问题。
问题描述:
在python中调用多个jar包,在windows下可以顺利调取,但是在Linux环境下无法调用。
问题代码:
import jpype
from jpype._jvmfinder import getDefaultJVMPath
jvmPath = getDefaultJVMPath()
my_dict = {}
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
g = os.walk(BASE_DIR)
str_file = ""
for path, dir_list, file_list in g:
for file_name in file_list:
str_file = str_file + os.path.join(path, file_name) + ";"
str_jar = "-Djava.class.path=" + str_file
if jpype.isJVMStarted() is False:
jpype.startJVM(jvmPath, "-ea", str_jar)
问题原因:
在windows中,当调取多个jar包时,用’;‘分隔,但是在linux中使用’:'分隔。
代码改进:
import jpype
from jpype._jvmfinder import getDefaultJVMPath
jvmPath = getDefaultJVMPath()
my_dict = {}
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
g = os.walk(BASE_DIR)
str_file = ""
for path, dir_list, file_list in g:
for file_name in file_list:
str_file = str_file + os.path.join(path, file_name) + ":"
str_jar = "-Djava.class.path=" + str_file
if jpype.isJVMStarted() is False:
jpype.startJVM(jvmPath, "-ea", str_jar)