Java Code with Jython Script



我正在开发一个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 脚本的解决方案或建议。

通过Jython代码的快速浏览器,看起来PythonInterpreter.execfile(String)将在文件系统中查找文件,而不是JAR。您可以尝试使用 Class.getResourceAsStream 并使用该方法的InputStream版本进行查找。

看起来Jython会自动从JAR的根目录加载文件,这给出了镜像CPython的行为。有关详细信息,请参阅将 python 文件捆绑在 jar 中以便通过 jython 进行访问。

最新更新