python调用java代码 java虚拟机(jvm)
1、新建com文件夹,在里面新建 fibnq.java
package com;
public class fibnq {
public fibnq(){}
public int fb(int n){
if(n <2){
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。
过程中我遇到个问题就是 版本不谦容问题,我使用 python3.6.5 需要安装 JPype1-0.6.3-cp36-cp36m-win_amd64.whl
我之前安装过 jpype1-0.7.0 版本出现一个异常错误,目前找不到解决的方法,建议安装 jpype1-0.6.3
python调用java代码 java虚拟机(jvm)的更多相关文章
- Java知多少虚拟机(JVM)以及跨平台原理
相信大家已经了解到Java具有跨平台的特性,可以“一次编译,到处运行”,在Windows下编写的程序,无需任何修改就可以在Linux下运行,这是C和C++很难做到的. 那么,跨平台是怎样实现的呢?这就 ...
- python调用scala或java包
项目中用到python操作hdfs的问题,一般都是使用python的hdfs包,然而这个包初始化起来太麻烦,需要: from pyspark impport SparkConf, SparkConte ...
- 如何实现Python调用C代码--python与C之间如何通信(swig)
转载: https://www.zhihu.com/question/23003213 1. C代码如何调用Python 1.1 test #include <Python.h> int ...
- python调用Go代码
Go 1.5发布了,其中包含了一个特性:可以编译生成动态链接库,经试验,生成的.so文件可以被python加载并调用.下面举个例子: 先写一个go文件main.go: package main imp ...
- 转python调用Go代码
Go 1.5发布了,其中包含了一个特性:可以编译生成动态链接库,经试验,生成的.so文件可以被python加载并调用.下面举个例子: 先写一个go文件main.go: package main imp ...
- python调用c代码2
1.生成动态链接库 [root@typhoeus79 c]# more head.c #include <stdio.h> #include <stdlib.h> typede ...
- python调用c代码
Linux环境下使用python调用C的printf例子: #!/usr/bin/env python2.7 #-*- coding:utf-8 -*- from ctypes import * de ...
- 在java代码中获取JVM参数(转)
近日关注性能调优,关注JMX,发现java.lang.management.*之强大.同时查阅了资料,整合一版关于JVM参数获取的note,仅供参考: MemoryMXBean memorymbean ...
- JAVA代码中获取JVM信息
一.JAVA中获取JVM的信息 原理,利用JavaSDK自带的ManagementFactory类来获取. 二.获取信息 1.获取进程ID @Test public void test1() { Ru ...
随机推荐
- Linux文件命名规则
Linux目录结构命名规定 几乎所有的Linux版本都会遵循FHS(Filesystem Hierarchy Standard),中文翻译过来即为文件系统层次化标准.类似于Windows操作系统中c盘 ...
- python中导入from appium import webdriver时报错:ModuleNotFoundError: No module named 'appium'
1.检查一下有没有安装Appium-Python-Client,执行语句:pip install Appium-Python-Client进行安装 2.安装后,出现ModuleNotFoundErro ...
- git 分支 版本回退
本地回退: git reset --hard HEAD~ 回退后推送到远程: git push --force .
- java数据结构4--集合Set
Set接口 Set接口用来表示:一个不包含“重复元素”的集合Set接口中并没有定义特殊的方法,其方法多数都和Collection接口相同. 重复元素的理解:通常理解:拥有相同成员变量的对象称为相同的对 ...
- 【NOIP2016提高A组模拟9.24】天使的分裂
题目 分析 这题可以递推, 但是\(O(n)\)还是会超时, 就用矩阵快速幂. #include <cmath> #include <iostream> #include &l ...
- JDBC接口封装
package cn.piesat.sparkproject.jdbc; import java.sql.Connection;import java.sql.DriverManager;import ...
- 【leetcode】638. Shopping Offers
题目如下: In LeetCode Store, there are some kinds of items to sell. Each item has a price. However, ther ...
- 类型xxx 无法反序列化。缺乏对应的数据成员。
WebApi——json返回多了 k_BackingField 产生原因: model类添加了 [System.Serializable] 返回json的时候会出现.
- Vue3.0 Function API---------引用
1.了解 Vue 3.0 是否有 break change,就像 Python 3 / Angular 2 一样? 不,100% 兼容 Vue 2.0,且暂未打算废弃任何 API(未来也不).之前有草 ...
- python操作mysql,redis
import pymysqlip ="127.0.0.1"#数据库地址user = 'username'#数据库用户名password="pwd"#数据库密码d ...