我可以让jar执行python脚本吗?

时间:2011-12-05 22:36:42

标签: java python jar executable

有没有办法在jar中调用脚本而不提取它?

3 个答案:

答案 0 :(得分:3)

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

unzip -p your.jar file_in_jar.py | python

答案 1 :(得分:1)

如果使用one作为参数调用,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

答案 2 :(得分:0)

如果您只想要纯Python,那么您可以使用zipfile。然后,如果文件已经编译,则可以使用子进程或this之类的东西

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