【问题标题】:Run Jython code from java class从 java 类运行 Jython 代码
【发布时间】:2013-03-28 06:30:50
【问题描述】:

我正在研究将运行 jython 文件以获得一些结果的可执行 jar 文件。 我尝试通过这种技术调用 jython 文件。

从java类运行.bat文件,.bat文件将调用Jython文件。

Runtime rt = Runtime.getRuntime();
Process process = rt.exec(new String[] { "cmd.exe", "/c", "D:\\calljython.bat " + parameters + "" });

jython 文件运行后,我通过InputStream 读取输出并获得结果。 这种技术在从 Eclipse 运行时可以使用文件,但在创建并运行可执行 jar 时会失败。

我使用的另一件事是PythonInterpreter,但在这种情况下也面临问题。

我想做的是:

从 java 中运行 Jython 代码以及要在 Jython 文件中使用的参数并获取结果。

【问题讨论】:

  • 什么是失败?你有任何堆栈跟踪吗?
  • 从可执行 jar 中我无法获得任何堆栈跟踪。它按照逻辑需要一些输入,然后什么都没有发生。
  • 我的建议是放置日志或打印语句并找出真正发生的事情,这样会更容易。打印要执行的命令。 Process.waitFor() 返回码等
  • 如何在可执行jar文件中添加日志?我尝试了 log4j,但它不起作用。
  • 然后放入 System.out.println()。您可以将 log4j 放入可执行的 jar 中。您只需要在 MANIFEST.MF 的类路径元素或系统类路径中指定 log4j

标签: java jython


【解决方案1】:

尝试调试代码并确保正在调用 bat 文件或 jython 并返回结果。 bat 文件应与您正在执行的 jar 文件一起放置(相同的层次结构)。

Runtime rt = Runtime.getRuntime();
Process process = rt.exec(new String[] { "cmd.exe", "/c", "calljython.bat " + parameters + "" });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-04
    • 2018-03-21
    • 2013-12-05
    • 2013-06-23
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    相关资源
    最近更新 更多