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打包,指定demo.Demo

 
<plugin>
       <groupId>org.apache.maven.pluginsgroupId>
       <artifactId>maven-jar-pluginartifactId>
       <version>2.4version>
       <configuration>
           <archive>
               
               <manifest>
                   
                   <addClasspath>trueaddClasspath>
                   <classpathPrefix>lib/classpathPrefix>
                   
                   <mainClass>demo.DemomainClass>
                manifest>
           archive>
           <includes>
               <include>**/*.*include>
           includes>
       configuration>
   plugin>

2.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]

你可能感兴趣的:(python)