美文网首页
python调用java

python调用java

作者: JT_X | 来源:发表于2018-06-15 21:53 被阅读0次

主要思路是通过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]

相关文章

网友评论

      本文标题:python调用java

      本文链接:https://www.haomeiwen.com/subject/fkcveftx.html