Python调用java代码-两种方法

2023-11-12

使用的模块jpype

一,直接使用java内置函数

from jpype import *

#startJVM:开启java虚拟机
#getDefaultJVMPath:自动获取虚拟机路径

startJVM(getDefaultJVMPath(), "-ea")
java.lang.System.out.println("Hello World")

shutdownJVM()#关闭虚拟机

开启java虚拟机:startJVM(虚拟机路径,模式)       

自动获取虚拟机路径:getDefaultJVMPath

调用java内置函数

二,调用jar文件

1,创建java文件并打包

在IDEA下创建包和Java文件

        

 写入java代码(不能有main函数):

package one;

public class to_jar {
    public static Integer get_length(String str){
        System.out.println(str.length());
        return str.length();
    }
}

打开cmd进入到该包同级目录下

先生成class文件:       javac -encoding utf-8 to_jar.java

打包jar文件:         jar cvf to_jar.jar one 【c:创建文件 v:详情信息 f:指定包】

 

2,python代码

import jpype

jarpath='D:\\untitled\\src\\to_jar.jar'    #jar绝对路径
print(jarpath)

jpype.startJVM(jpype.getDefaultJVMPath(), "-ea", "-Djava.class.path=%s" %jarpath)
#start(JVM路径,模式,jar文件路径)
obj=jpype.JClass('one.to_jar')#获取类

test=obj()#实例化
tk=test.get_length('主人,恭喜您,调用java成功')


jpype.shutdownJVM()

运行即可

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python调用java代码-两种方法 的相关文章

随机推荐

  • ajax arcengine,ArcGIS客户端开发学习笔记(一)—AJAX机制

    摘要 AJAX即 Asynchronous JavaScript and XML 异步JavaScript和XML 现在的GIS客户端编程都是基于Ajax技术的 我觉得Ajax最大的特点在于它提供了更好的用户体验 以往的Web开发 当用户填
  • 区块链技术5--BTC网络

    1BTC网络的工作过程 用户将交易发布到BTC网络上 节点收到交易后打包到区块 然后将区块发布到BTC网络上 2BTC网络的工作原理 比特币工作于网络应用层 其底层 网络层 是一个P2P Overlay network P2P覆盖网络 比特
  • Tableau Prep 数据处理工具使用入门

    1 什么是Tableau Prep 2018 04 Tableau 推出全新的数据准备产品 Tableau Prep 主要用户定位于如何帮助人们以快速可靠的方式对数据进行合并 组织和清理 进一步缩短从数据获取见解所需的时间 简而言之 Pre
  • kafka的安装搭建

    Kafka就不介绍了 主要记录下安装的过程 1 安装kafka得先安装jdk 可以使用以下命令查看下是否有安装过jdk rpm qa grep jdk 没有则运行一下命令安装jdk yum install java 1 8 0 openjd
  • 树莓派4B安装Pytorch, torchvision(附已编译安装包)

    树莓派4B安装Pytorch torchvision Install Pytorch Raspberry Pi 4B Linux raspberrypi 4 19 75 v7l 1270 SMP Tue Sep 24 18 51 41 BS
  • springboot集成swagger3+swagger-bootstrap-ui及使用详解

    1 引入 maven 依赖
  • Gradle中如何修改Springboot引入的依赖版本

    扫描漏洞升级 不知道各位是否遇到过以下问题 当下层项目将spring引入的某个依赖版本升级之后 上层项目只要指定了Springboot版本 那么还是会将这个版本改回去 比如 现在有两个Springboot项目A B B项目会调用A项目中的某
  • 玩一玩微信公众号开发(二) 管理凭据和自定义菜单

    管理access token access token介绍 在前面我们成功的使用了Spring Boot Web程序和微信对接 但是这仅仅是一个开始 我们还需要获取access token 也就是凭据 才能进行之后的工作 微信开发文档有如下
  • 大数据时代——生活、工作与思维的重大变革

    最近读了维克托 迈尔 舍恩伯格的 大数据时代 觉得有不少收获 让我这个大数据的小白第一次理解了大数据 作者是大数据的元老级先驱 放一张帅照 膜拜下 不过这本书我本人不推荐从头读一遍 因为书中的核心理念并不是特别多 可以看看我这篇博客 1 海
  • idea中git的简单使用及git分支

    这篇文章简单介绍了git 着重介绍了分支概念和idea中git的简单使用 提问题 git是啥 git的分支概念 idea中git的使用 git仓库 git命令 git安装 参考文章 git是个啥 分布式版本管理工具 git的前生今世 git
  • Solidity:源文件结构

    Solidity 源文件结构 SPDX License Identifier 如果源代码可用 则可以更好地建立对智能合约的信任 由于提供源代码总是涉及版权方面的法律问题 Solidity编译器鼓励使用机器可读的SPDX License Id
  • Synchronized详解

    目录 一 如何解决线程并发安全问题 二 synchronized原理详解 1 加锁的方式 2 synchronized底层原理 3 Monitor监视器锁 MonitorEnter指令获取monitor所有权过程 MonitorExit指令
  • java.lang.StackOverflowError: null(栈内存溢出)递归导致

    通常是递归导致 或者死循环 在方法里调用了自己 导致无限调用 很快就会报错StackOverflowError 例如 有些初学者会犯如下错误 这是service类 public void saveEntity Emp emp this sa
  • vue拖拽

    1 定义拖拽指令 2 使用 3 效果 4 完整代码
  • Spring Boot入门编写简单java代码

    这里我简单编写一个Hello World的代码 文章目录 1 设置访问端口 2 编写项目代码 1 设置访问端口 在yml文件中编写端口为8080 我们启动项目是的路径就是localhost 8080 server port 8080 2 编
  • ‘UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xff in position 0: invalid start byte‘成功解决

    今天在用pandas进行读取时出现了bug 出现这种情况的原因是 文件的编码不是 UTF8 编码的 而pandas读取文件时固定采用 UTF8 解码 解决方法是改为对应的解码方式 解决的方式有两种 第一种 可以查看你对应文件的编码格式 使用
  • 生成对角矩阵 numpy.diag

    给定对角线上元素 我想生成对角矩阵 在网上搜了一下 竟然都是numpy diagonal 这个函数的作用是提取给定矩阵的对角元素 当然不是我想要的 后来发现numpy diag才是生成对角矩阵的函数 所以写此文章记录之 import num
  • 【运维&测试】如何写好测试用例

    一 常用术语 按软件测试手段 黑盒 灰盒 白盒 其中白盒测试是三个当中技术难度最高的 测试方向 功能 性能 安全 测试点划分 兼容性 易用性 UI元素 二 测试用例是什么 是测试工作的核心 是一组在测试时输入输出的标准 是软件需求的具体对照
  • 微服务 tars php,TARS-PHP

    TARS PHP是针对PHP使用tars二进制协议 以及Tars平台整体运维 RPC等一系列能力的解决方案 它主要由如下的几个部分组成 Tars是基于名字服务使用 Tars 协议的高性能 RPC 开发框架 同时配套一体化的服务治理平台 帮助
  • Python调用java代码-两种方法

    使用的模块jpype 一 直接使用java内置函数 from jpype import startJVM 开启java虚拟机 getDefaultJVMPath 自动获取虚拟机路径 startJVM getDefaultJVMPath ea