python调用java


主要思路是通过subprocess执行jar包。

两种方式:

  1. java -jar jarName args
import subprocess

command = 'java -jar demo.jar %s %s' %(arg0,arg1)
stdout = subprocess.Popen(command,stdout=subprocess.PIPE,stderr=subprocess.PIPE).communicate()[0]

这种方式需要在jar包META-INF\MANIFEST.MF文件中,指定Main-Class参数,即java -jar命令执行的类。
比如用maven打包,指定<mainClass>demo.Demo</mainClass>:

 <!-- 打包插件 -->
<plugin>
       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-jar-plugin</artifactId>
       <version>2.4</version>
       <configuration>
           <archive>
               <!-- 生成MANIFEST.MF的设置 -->
               <manifest>
                   <!-- 为依赖包添加路径, 这些路径会写在MANIFEST文件的Class-Path下 -->
                   <addClasspath>true</addClasspath>
                   <classpathPrefix>lib/</classpathPrefix>
                   <!-- jar启动入口类 -->
                   <mainClass>demo.Demo</mainClass>
                </manifest>
           </archive>
           <includes>
               <include>**/*.*</include>
           </includes>
       </configuration>
   </plugin>
  1. java -cp jarPath packname.classname args
    这种方式不需要指定Main-Class参数,适用于一个jar包里有多个待执行类,如demo.jar里有package demo,里面包含两个类Demo1和Demo2,则调用Demo1如下:
import subprocess

command = 'java -cp c:/jarPath/demo.jar demo.Demo1 %s %s' %(arg0,arg1)
stdout = subprocess.Popen(command,stdout=subprocess.PIPE,stderr=subprocess.PIPE).communicate()[0]
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,886评论 18 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,759评论 18 399
  • 1、安装python库 2、Test.java 代码 3、生成jar包 4、Test.py 5、运行 参考文章:h...
    中年大叔的日常阅读 11,326评论 0 6
  • 一天游乐园经历,坐了过山车,碰碰车,还有摩天轮,写了项目价格,算了花多少钱。这就是我的数学日记手绘报。寒假作业,第...
    爱生活的美好阅读 880评论 0 2
  • 今天是我们在温哥华的最后一天,我们的旅途依旧快乐美好。上午我们来到了世界第二天花岗岩所在地——落基山脉。下...
    闫昊东阅读 223评论 0 1