在下面的代码中,我只是使用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不熟悉我真的很困惑 任何帮助将受到高度赞赏..!
答案 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