dyld:找不到符号:_JVM_CopySwapMemory

dyld: Symbol not found: _JVM_CopySwapMemory

我在 MacOS 机器上使用 java 8u202、HotSwapAgent 1.3.0、DCEVM 8u181 和 IntelliJ 为 java 应用程序设置开发环境。几天来一切正常,突然出现此错误:

dyld:惰性符号绑定失败:找不到符号:_JVM_CopySwapMemory 参考自:/Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home/jre/lib/libjava.dylib 预计在:/Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home/jre/lib/dcevm/libjvm.dylib

dyld:找不到符号:_JVM_CopySwapMemory 参考自:/Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home/jre/lib/libjava.dylib 预计在:/Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home/jre/lib/dcevm/libjvm.dylib

我尝试重新安装 JDK,用 DCEVM 替换 JVM,不仅安装 DCEVM 作为替代 JVV,而且 none 这些解决方案都有效。

有谁知道可能导致此问题的原因或解决方法吗?

JVM_CopySwapMemory 是 OpenJDK JVM 在 2019 年 1 月更新后公开的新方法。

JVM_CopySwapMemory(JNIEnv *env, 
                   jobject srcObj, 
                   jlong srcOffset,
                   jobject dstObj,
                   jlong dstOffset, 
                   jlong size,
                   jlong elemSize)

这意味着您需要一个特定的补丁文件来自行编译DCEVM项目,如果确实有可用的补丁的话。

遗憾的是,最新的二进制版本仅与 8u181 兼容,不与 8u202 兼容。