美文网首页
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