如何加载放置在不同位置的jar文件和支持文件

时间:2014-12-08 05:57:54

标签: python jar

我正在创建一个运行jar文件的python程序。 jar文件和一些支持文件放在与python程序目录不同的位置。我尝试将jar文件路径添加到sys.path,但它无法从那里访问该文件,但路径已正确添加到sys.path。我怎样才能使这个工作?

jar文件位置:E:\data

python文件位置:C:\Users\user\Desktop

我使用subprocess来调用jar文件,代码如下:

import os
import sys
import subprocess as sp

class abc():
    def __init__(self):
        sys.path.append(r'E:\data')

    def run(self):
        print sys.path
        env = dict(os.environ)
        env['JAVA_OPTS'] = '-Xms256m -Xmx256m -Xss1024k'
        sp.call(['java', '-jar', 'file.jar'], env=env)

if __name__ == '__main__':
    o = abc()
    o.run()

运行上面的代码后,我收到错误消息:

Error: Unable to access jarfile file.jar

2 个答案:

答案 0 :(得分:4)

如果您只是更改工作目录该怎么办:

import os
cwd = os.getcwd() #current directory
os.chdir('path/to/jar')
... # run file
...
os.chdir(cwd)

答案 1 :(得分:2)

导入python模块时使用

sys.pathPYTHONPATH

执行命令时,操作系统在其系统路径(Windows上为%PATH%)中查找命令。

没有作为参数传递的数据/文件名的查找路径。

使用sp.call()时,系统路径查找使用脚本从中启动的任何目录。因此,您需要将dir更改为E:\DATA或使用绝对路径:

sp.call(['java', '-jar', 'E:\DATA\file.jar'], env=env)

Windows上有很多env变量:https://en.wikipedia.org/wiki/Environment_variable#Default_values