为什么要写这篇文章呢?因为生物信息会遇见很多java写的扩展包,我们常规喜欢用python去处理和调用他们的API。但是对于网上很多教程,都是缺少很多步骤致使我们调式和学习起来很困难,今天将python调用java包的说明整理成一篇易于操作和理解的文档供大家参考。

JPype是一个能够让 python 代码方便地调用 Java 代码的工具!

1. 安装 JPype

pip install JPype1 -i https://pypi.douban.com/simple

windows:https://www.lfd.uci.edu/~gohlke/pythonlibs/#jpype (如果安装失败请在这个目录下载)

2.准备jar文件:

JpypeDemo.java 代码清单:

package jpype;
  
public class JpypeDemo {  
    public String sayHello(String user){  
        return "hello" + user;  
    }  
    public int calc(int a, int b){  
        return a + b;   
    }  
}  

文件目录:

|- demo.py
|- JpypeDemo.jar
|
|-jpype
| —- JpypeDemo.class
| —-JpypeDemo.java

首先,编译 *.java 文件

cd jpype
javac JpypeDemo.java

3.打包 jar 文件

jar -cvf JpypeDemo.jar jpype
文件清单

4.编写Python脚本

from jpype import *  
import os.path

jvmPath = getDefaultJVMPath()
jars = ["JpypeDemo.jar"]
jvm_cp = "-Djava.class.path={}".format(":".join(jars))
startJVM(jvmPath, "-ea", jvm_cp, convertStrings = False)
JDClass = JClass("jpype.JpypeDemo")  
jd = JDClass()  
#jd = JPackage("jpype").JpypeDemo() #两种创建jd的方法  
jprint = java.lang.System.out.println  
jprint(jd.sayHello(", world!"))  
print(jd.calc(2,4))  
shutdownJVM()

参考文章:

1.https://www.php.cn/python-tutorials-374979.html