我可以让jar执行Python脚本吗?
有没有什么方法可以在不解压jar文件的情况下调用里面的脚本?
3 个回答
3
因为JAR文件其实就是一种压缩文件,所以你可以把里面的某个文件解压出来,然后把它的内容直接传给Python程序。
unzip -p your.jar file_in_jar.py | python
2
如果你有一个名为“__main__.py”的文件放在一个压缩包里,Python会把它当作主程序来运行,只要你在调用时把这个压缩包作为参数传入。因为jar文件其实就是一种压缩包,所以你只需要把你的Python脚本命名为“__main__.py”,或者创建一个“__main__.py”脚本来导入你的主脚本,然后在Java中调用Python解释器,把.jar文件的路径作为唯一的参数传进去。这样,Python脚本中导入的其他模块就能像在一个文件夹结构中一样正常工作。
接下来,你可以通过管道(stdin/stdout)与Python进程进行通信,或者使用一些客户端/服务器的方式(比如xmlrpc、Unix命名管道等)来进行交互。
还有一个选择是使用Jython,这是一种基于Java虚拟机的Python解释器,这样你就可以直接从Java代码中调用Python代码。将Jython代码集成到Java程序中有几种方法,其中一些可以在这里找到:http://jythonpodcast.hostjava.net/jythonbook/en/1.0/JythonAndJavaIntegration.html#using-jython-within-java-applications