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)的更多相关文章

  1. Java知多少虚拟机(JVM)以及跨平台原理

    相信大家已经了解到Java具有跨平台的特性,可以“一次编译,到处运行”,在Windows下编写的程序,无需任何修改就可以在Linux下运行,这是C和C++很难做到的. 那么,跨平台是怎样实现的呢?这就 ...

  2. python调用scala或java包

    项目中用到python操作hdfs的问题,一般都是使用python的hdfs包,然而这个包初始化起来太麻烦,需要: from pyspark impport SparkConf, SparkConte ...

  3. 如何实现Python调用C代码--python与C之间如何通信(swig)

    转载: https://www.zhihu.com/question/23003213 1. C代码如何调用Python 1.1 test #include <Python.h> int ...

  4. python调用Go代码

    Go 1.5发布了,其中包含了一个特性:可以编译生成动态链接库,经试验,生成的.so文件可以被python加载并调用.下面举个例子: 先写一个go文件main.go: package main imp ...

  5. 转python调用Go代码

    Go 1.5发布了,其中包含了一个特性:可以编译生成动态链接库,经试验,生成的.so文件可以被python加载并调用.下面举个例子: 先写一个go文件main.go: package main imp ...

  6. python调用c代码2

    1.生成动态链接库 [root@typhoeus79 c]# more head.c #include <stdio.h> #include <stdlib.h> typede ...

  7. python调用c代码

    Linux环境下使用python调用C的printf例子: #!/usr/bin/env python2.7 #-*- coding:utf-8 -*- from ctypes import * de ...

  8. 在java代码中获取JVM参数(转)

    近日关注性能调优,关注JMX,发现java.lang.management.*之强大.同时查阅了资料,整合一版关于JVM参数获取的note,仅供参考: MemoryMXBean memorymbean ...

  9. JAVA代码中获取JVM信息

    一.JAVA中获取JVM的信息 原理,利用JavaSDK自带的ManagementFactory类来获取. 二.获取信息 1.获取进程ID @Test public void test1() { Ru ...

随机推荐

  1. 洛谷P1412 经营与开发题解

    题目链接QWQ这里就不阐述了: 题解部分: 从题面上来看,这是个dp(递推)的题目. 但是dp要满足无后效性,但这个题为了取最值,得考虑从当前开始一直持续到结束的p的影响. 这让我们怎么满足无后效性? ...

  2. [易学易懂系列|rustlang语言|零基础|快速入门|(13)|Generics泛型]

    [易学易懂系列|rustlang语言|零基础|快速入门|(13)] 有意思的基础知识 Generics泛型 我们今天来看看泛型. 什么是泛型? 我们来看看这样的情景: 我们要写一个函数,这个函数可以处 ...

  3. Python核心技术与实战——十二|Python的比较与拷贝

    我们在前面已经接触到了很多Python对象比较的例子,例如这样的 a = b = a == b 或者是将一个对象进行拷贝 l1 = [,,,,] l2 = l1 l3 = list(l1) 那么现在试 ...

  4. Java并发编程实战 第10章 避免活跃性危险

    死锁 经典的死锁:哲学家进餐问题.5个哲学家 5个筷子 如果没有哲学家都占了一个筷子 互相等待筷子 陷入死锁 数据库设计系统中一般有死锁检测,通过在表示等待关系的有向图中搜索循环来实现. JVM没有死 ...

  5. JDK的二进制安装

    JDK的二进制安装步骤 1. Jdk1.8二进制包下载路径http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads- ...

  6. 【leetcode】1105. Filling Bookcase Shelves

    题目如下: We have a sequence of books: the i-th book has thickness books[i][0] and height books[i][1]. W ...

  7. XML 文档包含 XML 元素。

    XML 文档包含 XML 元素. 什么是 XML 元素? XML 元素指的是从(且包括)开始标签直到(且包括)结束标签的部分. 元素可包含其他元素.文本或者两者的混合物.元素也可以拥有属性. < ...

  8. MongoClient类

    在2.10.0版本中引入了MongoClient类,同时在其API中也说明了Mongo类会在将来的版本中被MongoClient替换(Note: This class has been superse ...

  9. [luogu]P1514 引水入城[搜索][记忆化][DP]

    [luogu]P1514 引水入城 引水入城 题目描述在一个遥远的国度,一侧是风景秀美的湖泊,另一侧则是漫无边际的沙漠.该国的行政区划十分特殊,刚好构成一个N 行M 列的矩形 ,如下图所示,其中每个格 ...

  10. Oracle--listagg函数使用注意

    listagg是一个列转行函数,在一对多的情况下,通过该函数转换成一对一 该函数使用跟聚合函数中的SUM差不多,但需要注意的是,该函数不适合用于多表连接情况下,都则及时字段值相同也会出现多值 例如: ...