python调用java代码 java虚拟机(jvm)
2020-12-13 06:00
标签:com 中文路径 重要 过程 java str pre 工作 dll 过程中我遇到个问题就是 版本不谦容问题,我使用 python3.6.5 需要安装 JPype1-0.6.3-cp36-cp36m-win_amd64.whl 我之前安装过 jpype1-0.7.0 版本出现一个异常错误,目前找不到解决的方法,建议安装 jpype1-0.6.3 python调用java代码 java虚拟机(jvm) 标签:com 中文路径 重要 过程 java str pre 工作 dll 原文地址:https://www.cnblogs.com/wuzaipei/p/11161247.html1、新建com文件夹,在里面新建 fibnq.java
package com;
public class fibnq {
public fibnq(){}
public int fb(int n){
if(n ){
return 1;
}else {
return fb(n-1)+fb(n-2);
}
}
}
2、在com文件夹路径打开cmd,编译fibnq.java
javac ./fibnq.java
3、返回上一层目录
cd ../
4、把fibnq类打包:注意 com要和fibnq.java的包名相同
jar cvf test.jar com
5、python调用:先安装 :pip install jpype1 自行百度安装
import time
from jpype import *
import os
if __name__ == ‘__main__‘:
jdkPath = r"D:\Java1.8\jdk1.8.0_191\jre\bin\server\jvm.dll"
# 注意一个重要的问题,导入包的时候路径不能有中文。
jarpath = os.path.join(os.path.abspath(‘.‘), ‘test.jar‘)
print(jarpath)
startJVM(jdkPath,"-ea","-Djava.class.path=%s" % jarpath) #
java.lang.System.out.println(" helloworld! ")
fibnq = JClass(‘javaIoStream.fibnq‘)
# 或者通过JPackage引用Test类
# javaIoStream = JPackage(‘javaIoStream‘)
# fibnq = javaIoStream.fibnq()
st = time.time()
for i in range(40):
print(fibnq().fb(i))
print(time.time()-st)
shutdownJVM()
6、注意所有工作路径确保在英文路径下进行,出现中文路径会出现报错,各种bug。