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. DECLARE_GLOBAL_DATA_PTR

    DECLARE_GLOBAL_DATA_PTR在arch/arm/include/asm/global_data.h中定义 #include <asm-generic/global_data.h ...

  2. Java并发编程实战 第2章 线程安全性

    编写线程安全的 代码,核心在与对共享的和可变的对象的状态的访问. 如果多个线程访问一个可变的对象时没有使用同步,那么就会出现错误.在这种情况下,有3中方式可以修复这个问题: 不在线程之间共享该状态变量 ...

  3. java课堂作业,求多参数的和

    设计思想 第一步:用户输入他想要计算的数字个数 第二步:声明字符串数组,保存用户的输入,同时每次输入后强制转换类型并求和 第三步:将声明的数组赋值给args 第四步:输出结果 程序流程图 程序源代码 ...

  4. share point 查询文档库 过滤 文档名称和上传时间

    SPQuery query = new SPQuery(); CAMLBuilder.WhereBuilder whereBuilder = null; pageCount = ; if (!stri ...

  5. python 后台 安装 富文本编辑

    前言 当然需要安装一些后台只能输入一些文本编辑器,不然这样多少不美观呀 当然python 有 safe 可以把后台的标签转换 , 还有 striptags   这个是换成html 格式的,但不会加粗或 ...

  6. mysql<七>

    -- ########## 01.集合逻辑 ########## -- MySQL中,只实现了一种集合逻辑:逻辑与,有两种用法:UNION 和 UNION ALL -- 临时表1 CREATE TAB ...

  7. Spring IOC(一)

    最近复习,准备整理下复习笔记 Spring IOC 部分: 控制反转(Inversion of Control) IOC是什么 简言之 IOC完成的事情原先由程序员主动通过new实例化对象事情,转交给 ...

  8. tf.expand_dims和tf.squeeze函数

    from http://blog.csdn.net/qq_31780525/article/details/72280284 tf.expand_dims() Function tf.expand_d ...

  9. SQL复杂筛选

    SELECT A.MATERIALID,A.MATERIALNAME,ISNULL(A.COMPIDSEQ,'') COMPIDSEQ,ISNULL(A.SUPPLYID,'') SUPPLYID,S ...

  10. 【UOJ #210】【UER #6】寻找罪犯

    题目描述 通过一些不可描述的方式,妹滋滋算出了 51% 的得票率,于是就她就把这个公开给了广大用户 —— UOJ 解散已成定局. 几个小时后,UOJ 创始人伏特跳蚤国王宣布辞职,即日起退出 UOJ 团 ...