将jar中的python文件捆绑在一起以便通过jython进行访问

时间:2011-06-07 03:24:16

标签: java python jar jython

在下面的代码中,我只是使用jython

从java代码执行test.py.
public static void main(String[] args) {
  org.python.util.PythonInterpreter python = new org.python.util.PythonInterpreter();
  python.execfile("test.py");
  ...

我的问题是test.py需要在运行jar文件的同一目录中 我需要将这个test.py捆绑在jar中,并且仍然可以使用jython执行它。

How do you invoke a python script inside a jar file using python?中建议的方法使用ClassLoader类中的getResourceAsStream方法读取字符串中的脚本对我不起作用,因为我的test.py导入了更多捆绑在jar中的python脚本。

对java和jython不熟悉我真的很困惑 任何帮助将受到高度赞赏..!

2 个答案:

答案 0 :(得分:6)

你可以简单地将test.py放在jar的根目录下,其他脚本的组织方式与普通python中的fs一样。 然后你可以这样做:

public static void main(String[] args) {
  org.python.util.PythonInterpreter python = new org.python.util.PythonInterpreter();
  python.exec("import test");
  python.exec("test.callsomthing()");
}

test.py中的导入应该正常工作,包括从test.py导入其他模块。

答案 1 :(得分:0)

使用类的“getResourceAsStream”从jar中提取python文件。

例如参见:http://fiji.sc/wiki/index.php/Jython_Scripting#Distributing_jython_scripts_in_a_.jar_file