我正在开发一个Java应用程序,其中我编写了一个Jython脚本来执行任务。代码工作正常,Jython脚本在通过Eclipse IDE执行时执行。 但是当我将Java应用程序导出到.jar文件时,Jython脚本不会运行。
这是我在Eclipse IDE中遵循的目录结构:
application.jar
|-- com
|--example
|-- package1
|-- Function2.Java
|-- pre_myAction.py
|-- package2
|-- Function1.Java
我试图通过以下方式从Function1.java调用script_function:
PythonInterpreter interp = new PythonInterpreter();
interp.execfile(".//com//example//pre_myAction.py");
String funcName = "function1";
PyObject someFunc = interp.get(funcName);
if (someFunc == null) {
throw new Exception("Could not find Python function: " + funcName);
}
try {
interp.set("DataMap", dataMap);
someFunc.__call__(new PyString(file1));
} catch (PyException e1) {
LOGGER.log(Level.SEVERE, e1.getMessage());
}
interp.cleanup();
interp.close();
当我尝试从命令提示符执行jar时,我收到此错误:
File not found -//com//example//pre_myAction.py
相同的代码在Eclipse IDE中执行,没有任何错误。
任何人都可以提供有关如何在jar文件中执行jython脚本的解决方案或建议。
答案 0 :(得分:0)
快速浏览Jython代码,看起来像PythonInterpreter.execfile(String)
将在文件系统中查找文件,而不是JAR。您可以尝试使用Class.getResourceAsStream
并使用方法的InputStream
版本进行查找。
看起来Jython会自动从JAR的根目录加载文件,从而提供镜像CPython的行为。有关详细信息,请参阅Bundling python files inside jar for access via jython。