dyld:未找到符号:_JNI_CreateJavaVM

kaw*_*nah 12 java macos node.js

这个错误是什么意思?

我需要做些什么来解决它?

我正在尝试在Mac OS El Captain上为node.js(特别是xslt4node)运行基于java的模块,但每次我收到此错误.一切似乎对Windows用户都有效.完整错误如下:

dyld:惰性符号绑定失败:未找到符号:_JNI_CreateJavaVM引自:/projects/main-project/node_modules/java/build/Release/nodejavabridge_bindings.node预期:flat namespace

dyld:未找到符号:_JNI_CreateJavaVM引自:/projects/main-project/node_modules/java/build/Release/nodejavabridge_bindings.node预期:flat namespace

我找到了架构x86_64的未定义符号:JNI_CreateJavaVM OS-X Xcode是我能找到的最接近我解释我确切问题的符号,但是我没有使用xcode进行开发,我在node.js平台上.

有没有人见过这个?这是什么意思?

到目前为止,我尝试过:

  1. 更改Java版本
  2. 删除和重建 node_moudles
  3. 添加JVM功能 <string>JNI</string>
  4. 按照以下文档卸载Java:运行这些命令的https://www.java.com/en/download/help/mac_uninstall_java.xml不执行任何操作:

用户:~kawnah $ sudo rm -fr /Library/PreferencePanes/JavaControlPanel.prefPane用户:~kawnah $ sudo rm -fr~/Library/Application\Support/Java用户:~kawnah $ java -version java version"9.0.1" Java(TM)SE运行时环境(版本9.0.1 + 11)Java HotSpot(TM)64位服务器VM(版本9.0.1 + 11,混合模式)

  1. 尝试不同版本的节点(7.10.0)
  2. 完全卸载node/npm,然后重新安装

kaw*_*nah -3

我终于弄明白了!

我需要这个 npm 包才能让 node-java 在我的机器上正常工作https://www.npmjs.com/package/winreg

npm install winreg解决了所有问题