Python调用Java可执行jar包问题
作者:wzcd 发布时间:2021-06-02 10:26:26
标签:Python,Java,可执行,jar包
基于IDEA生成可执行jar包
1.编写class的代码,注意一定要有main()方法才可以生成jar包,main()方法可以没有内容。
例如:
public class testFunction {
public static void main(String[] args) {
}
public static void send() {
System.out.println("i use message");
}
}
2.点击file->project structure
3.点击选择想要生成jar包的类,这里我选择testFunction.class。
注意Directory for meta-inf/manifest.mf的位置不要选择默认的,最好选择项目根目录。
我选择默认的会找不到生成的jar包的位置。
4.点击Build->Build Artifacts后选择对应的Artifact,并点击Build即生成成功。
5.生成的jar包
Python如何调用jar
1.需要下载jpype,windows+R输入cmd进入命令提示符,将路径转到jpype所在目录,执行pip install jpype文件名。
2.具体操作方法请自行搜索,能找到详细步骤。
代码如下
def sendMessage():
# 1.加载jar包
jarpath = os.path.join(os.path.abspath("."),"(填写你的jar包的filepath)\\wit_test.jar")
# 2.获取jvm.dll 的文件路径
jvmPath = jpype.getDefaultJVMPath()
# 3.开启jvm
jpype.startJVM(jvmPath, "-ea", "-Djava.class.path=%s" % (jarpath))
# 4.加载java类(参数是java的长类名)
javaClass = jpype.JClass("testFunction")
# 5.实例化java对象
javaInstance = javaClass()
# 6.调用java方法,由于我写的是静态方法,直接使用类名就可以调用方法
javaInstance.send()
# 7.关闭jvm
jpype.shutdownJVM()
pass
如果只需调用一次jar包,上述代码可行。
如果需要多次调用会出现重新启动失败的问题,那么解决办法是把代码放在main()函数中,前5步代码初始化完毕后,每次只循环使用第6步代码。
第7步代码去掉。
来源:https://blog.csdn.net/strongerme_/article/details/123164163
0
投稿
猜你喜欢
- 定义与结构 备忘录(Memento)模式又称标记(Token)模式。GOF给备忘录模式的定义为:在不破坏
- 我想,对于各位使用面向对象编程语言的程序员来说,“接口”这个名词一定不陌生,但是不知各位有没有这样的疑惑:接口有什么用途?它和抽象类有什么区
- java读取resources文件详解及实现代码Java项目中,经常需要将资源文件打包放在项目中,然后在项目中去读取对应的文件。实现代码:S
- 本文实例讲述了Java设计模式之享元模式。分享给大家供大家参考,具体如下:解释一下概念:也就是说在一个系统中如果有多个相同的对象,那么只共享
- MapTask工作机制如图所示。 (1)Read阶段:MapTask通过用户编写的RecordReader,从输入InputSpl
- 前言一直对它们之间的关系感到好奇,SpringBoot既然是Spring的封装,那么SpringBoot在初始化时应该也会有Bean的加载,
- 1、应用场景:从一份html文件中或从String(是html内容)中提取纯文本,去掉网页标签;2、代码一:replaceAll搞定//从h
- 一、封装的查询方法/*** solr查询方法* @param client solr客户端* @param query solr查询对象*
- Android内存优化是我们性能优化工作中比较重要的一环,这里其实主要包括两方面的工作:1、优化RAM,即降低运行时内存。这里的目的是防止程
- 1. Mybatis的@param注解自定义对象也用@param注解注:使用@param注解,mapper.xml 不加parameterT
- 最近碰到个需求,是希望在Unity有一个按钮,打开后直接跳转淘宝app,打开商品页面。百度了下没有相关的文章,于是我在此分享下。之前开发游戏
- 今天我做的是一个自定义刻度尺控件,由于项目需求需要使用刻度尺那样滑动选择,由于对自定义控件的认识还不够深入,于是花了一周多时间才把这个控件给
- (效果如上图所示)其实很简单:比方说上面的容器是一个ListView<ListView android:id="@+id/l
- 基本概念 * (Listener): * 用于监听web应用中某些对象、信息的创建、销毁、增加,修改,删除等动作的发生,然后作出相应的响应处
- 对于跨域,相信同学们都有所了解。前端的跨域的若干种方式,大家也都知道,什么 JSONP,iframe+domain 等等。但是我们今天的主题
- java中对List分段操作的实例问题:假设A系统查询出来一个很大很大的List,现在B系统想要得到这个List来导出报表,但是B系统部署环
- 关于隐藏和覆盖的区别,要提到RTTI(run-time type identification)(运行期类型检查),也就是运行期的多态,当一
- 一、二维数组进入正题之前.首先为了便于大家理解,我画了一个图:xx枪战游戏中, 我是一个刚刚注册账号的小白,系统送了我两把枪,此时,我的武器
- 在开发中常常使用到刷新分页,这里实现一个 RecyclerView 的简单的刷新分页操作,测试效果见文末,实现过程参考如下:实现思路加载更多
- IDEA安装后,前进 后退快捷按钮默认不在工具栏显示,需要手动将其添加到工具栏*按照图一选中Toolbar Run Actions ,点击右