【问题标题】:Can I make a jar execute a python script?我可以让 jar 执行 python 脚本吗?
【发布时间】:2012-01-13 15:21:10
【问题描述】:

有没有什么方法可以在不解压的情况下调用 jar 中的脚本?

【问题讨论】:

  • 您的标题和问题似乎有冲突.. 或者至少我不明白。也许您可以澄清并扩展您正在尝试做的事情。
  • 我对它的理解是,“如何使用Java程序执行Java程序自己的Jar-archive中包含的Python脚本?”对吗?
  • @BeauGrantham 我理解这个问题没有问题。上面评论中的阅读似乎是唯一可能的。

标签: java python jar executable


【解决方案1】:

由于 JAR 文件是 zip 存档,您可以将单个文件解压缩到标准输出并通过管道传输到 Python。

unzip -p your.jar file_in_jar.py | python

【讨论】:

    【解决方案2】:

    如果使用一个作为参数调用,Python 将解释存储在 zip 文件中的名为“__main__.py”的文件。由于 jar 文件是 zip,您所要做的就是将 Python 脚本命名为“__main__.py”,或者创建一个“__main__.py”脚本来导入您的主脚本,然后从 Java 中调用 Python 解释器作为外部进程,将 .jar 文件路径作为其唯一参数传递。 (从 Python 脚本中导入其他 Python 模块将如同 .jar 文件所在的目录结构一样工作)

    然后您可以通过管道 (stdin/stdout) 或使用某些客户端/服务器方法(xmlrpc、Unix 命名管道等)与 Python 进程通信

    另一种选择是使用 Jython - 基于 JVM 的 Python 解释器,这样您就可以直接从 Java 代码调用 Python 代码 - 有几个选项可以将 Jython 代码集成到 java 程序中,这里描述了一些女巫: http://jythonpodcast.hostjava.net/jythonbook/en/1.0/JythonAndJavaIntegration.html#using-jython-within-java-applications

    【讨论】:

      【解决方案3】:

      如果你只想要纯python,那么你可以使用zipfile。然后你可以使用类似 subprocess 或 this 如果文件已经编译

      如果您想从 java 代码中使用它,您可以使用类似于在 jar 文件中加载类/资源的方法。存在一个变体here 和另一个here。这个我没试过。

      【讨论】:

        猜你喜欢
        • 2015-06-29
        • 1970-01-01
        • 1970-01-01
        • 2023-03-08
        • 1970-01-01
        • 1970-01-01
        • 2010-10-02
        • 2011-10-14
        • 1970-01-01
        相关资源
        最近更新 更多