Pytest使用Jpype调用jar包报错:Windows fatal exception: access violation

问题描述

​   之前我们有讲过如何使用Jpype调用jar包,在成功调用jar包后,接着在Pytest框架下编写自动测试用例。但是在Pytest下使用Jpype加载jar包,并调用其中的方法会以下提示信息:

​   虽然提示信息显示有Windows显示致命错误,但是并不会影响最后的测试用例是否会通过。但是每次运行Pytest测试函数时,都会有这样的信息看着很难受。

解决方法

​   我们直接来看解决方法,只要在Jpype启动jvm的地方加上以下代码即可:

python 复制代码
import faulthandler
faulthandler.enable()
faulthandler.disable()

​   这样Pytest就会过滤掉上述的报错信息。

问题分析

​   我在github上找到这个问题的帖子是2020年的("Windows fatal exception: access violation" on Windows using pytest · Issue #561 · jpype-project/jpype)。

​   根据帖子里面的描述,这个问题是harmless(无害的),因此虽然有Windows fatal exception的提示信息,测试方法也能正常通过。帖子也有推测这个问题出现的原因,进程死亡、线程死亡和资源被强制移除等,但是似乎并没有结论,只给出了绕过这个提示信息的方法。

​   另外,我在后续的测试中,对jar包中的代码进行进一步封装后,重新调整了一下Pytest的代码,上面的Windows fatal exception又不会显示了。帖子里面也给出了复现这个问题的方法,只需要在使用Jpype的文件中添加下面代码即可:

python 复制代码
import faulthandler
import sys
faulthandler.enable(file=sys.stdout)
相关推荐
geovindu6 分钟前
python: Functional Options Pattern
开发语言·后端·python·设计模式·惯用法模式·函数式选项模式
l1t21 分钟前
在linux和windows中解决duckdb 1.6dev版本输出执行计划报错问题
linux·运维·数据库·windows·duckdb
love530love26 分钟前
WorkBuddy + 本地 ComfyUI MCP:免订阅费的自建方案
人工智能·windows·mcp·comfy cloud
tryCbest38 分钟前
Python 文件操作
服务器·python
涛声依旧-底层原理研究所1 小时前
Agent 长任务可靠性设计:实现暂停、恢复、续跑与崩溃重启的完整方案
人工智能·python·系统架构
AC赳赳老秦1 小时前
防火墙规则批量配置实战:OpenClaw 自动生成模板、批量下发与合规性校验全解析
java·开发语言·人工智能·python·github·php·openclaw
小小编程路1 小时前
如何优化while循环的性能?
python
假如梵高是飞行员2 小时前
WSL2 从 img 镜像文件启动特定 Linux 发行版完整指南
linux·windows·wsl
lzqrzpt2 小时前
LED驱动电源选型标准与工程应用技术要点解析
python·单片机·嵌入式硬件·物联网
Maiko Star3 小时前
Python核心语法——函数
开发语言·python