首页 > 解决方案 > dyld: Symbol not found: _JVM_CopySwapMemory

问题描述

I was setting up my development environment for a java application using java 8u202, HotSwapAgent 1.3.0, DCEVM 8u181 and IntelliJ on a MacOS machine. Everything worked fine for a few days when suddenly this error appeared:

dyld: lazy symbol binding failed: Symbol not found: _JVM_CopySwapMemory Referenced from: /Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home/jre/lib/libjava.dylib Expected in: /Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home/jre/lib/dcevm/libjvm.dylib

dyld: Symbol not found: _JVM_CopySwapMemory Referenced from: /Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home/jre/lib/libjava.dylib Expected in: /Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home/jre/lib/dcevm/libjvm.dylib

I've tried reinstalling JDK, replace JVM by DCEVM not just install DCEVM as an alternative JVV but none of these solutions worked.

Does anyone knows what could cause this or how to solve it?

标签: javamacosintellij-ideahotswap

解决方案


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.


推荐阅读