带有Jython脚本的Java代码

带有Jython脚本的Java代码,java,eclipse,jython,Java,Eclipse,Jython,我正在开发一个Java应用程序,其中编写了一个Jython脚本来执行一项任务。代码运行良好,Jython脚本在通过EclipseIDE执行时执行。 但是当我将Java应用程序导出到.jar文件时,Jython脚本不会运行 这是我在Eclipse IDE中遵循的目录结构: application.jar |-- com |--example |-- package1 |-- Function2.Java

我正在开发一个Java应用程序,其中编写了一个Jython脚本来执行一项任务。代码运行良好,Jython脚本在通过EclipseIDE执行时执行。 但是当我将Java应用程序导出到.jar文件时,Jython脚本不会运行

这是我在Eclipse IDE中遵循的目录结构:

application.jar
   |-- com
       |--example

           |-- package1
             |-- Function2.Java
             |-- pre_myAction.py

           |-- package2
             |-- Function1.Java
我试图通过以下方式从Function1.java调用script_函数:

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
同样的代码在EclipseIDE中执行,没有任何错误


任何人都可以提供如何在jar文件中使用执行jython脚本的解决方案或建议。

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


看起来Jython将自动从JAR的根目录加载文件,这将提供行为镜像CPython。有关详细信息,请参阅。

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


看起来Jython将自动从JAR的根目录加载文件,这将提供行为镜像CPython。有关详细信息,请参阅。

“不运行”没有给我们提供太多的信息。错误信息是什么?您如何调用Jar?您是否能够以同样的方式运行更简单的Jython脚本?当您在命令行上运行jar时,是否为Jython启用了java?顺便说一句:您的代码“example”不包含任何代码。看起来pre_myAction.py在com/example/package1中,而不是com/example中。为什么这在EclipseIDK中会起作用。编辑:没关系,我想我看到了。“不跑”并没有给我们太多可以继续的东西。错误信息是什么?您如何调用Jar?您是否能够以同样的方式运行更简单的Jython脚本?当您在命令行上运行jar时,是否为Jython启用了java?顺便说一句:您的代码“example”不包含任何代码。看起来pre_myAction.py在com/example/package1中,而不是com/example中。为什么这在EclipseIDK中会起作用。编辑:没关系,我想我看到了。