使用 Java (1.8) 和 JDBC 访问旧的 Pervasive SQL 数据库中的数据时,我遇到了在执行语句 DriverManager.getConnection(...) 时出现运行时错误 EXCEPTION_ACCESS_VIOLATION 的问题。错误日志文件包含消息“崩溃发生在本机代码中的 Java 虚拟机之外”以及以下线索:
# JRE version: Java(TM) SE Runtime Environment (8.0_291-b10) (build 1.8.0_291-b10)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.291-b10 mixed mode windows-amd64 compressed oops)
# Problematic frame:
# C [w64pvjdbc2.dll+0x27f4]
根据我在这里阅读的内容https://stackoverflow.com/questions/140030/possible-causes-of-java-vm-exception-access-violation我尝试从 Windows PATH 中删除除 C:\WINDOWS 之外的所有内容\System32 问题消失了(我犹豫说“它解决了问题”)。'
这为我提供了一个解决方法,可以让我完成开发,但问题的原因可能是什么?据推测,原始 Windows PATH 中发生的某些事情正在加载,而不是 C:\WINDOWS\System32 中的“正确”版本,但是可以做什么来确定具体是什么?这可能是某种 32 位/64 位不兼容问题吗?