将Python文件打包到JAR中以便通过Jython访问

2 投票
2 回答
3056 浏览
提问于 2025-04-16 19:05

在下面的代码中,我只是通过 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 执行它。

如何在 jar 文件中调用 Python 脚本? 中建议的方法是使用 ClassLoader 类的 getResourceAsStream 方法来读取脚本,但对我来说不太管用,因为我的 test.py 还导入了其他一些打包在 jar 文件里的 Python 脚本。

我对 Java 和 jython 还很陌生,真的很困惑。
任何帮助都会非常感激..!

2 个回答

0

通过使用类的“getResourceAsStream”方法,从jar文件中提取python文件。

例如,可以参考这个链接:http://fiji.sc/wiki/index.php/Jython_Scripting#Distributing_jython_scripts_in_a_.jar_file

6

你可以把 test.py 放在 jar 文件的根目录下,然后把其他脚本按照正常的 Python 文件系统结构来组织。这样做之后,你可以像下面这样操作:

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 导入其他模块。

撰写回答