为什么要写这篇文章呢?因为生物信息会遇见很多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