这个错误是什么意思?
我需要做些什么来解决它?
我正在尝试在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
我发现Undefined symbols for architecture x86_64: JNI_CreateJavaVM OS-X Xcode是我能找到的最接近我解释我确切问题的,但我没有使用xcode进行开发,我在node.js平台上。
有没有人见过这个?这是什么意思?
到目前为止,我尝试过:
node_moudles
<string>JNI</string>
用户:~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,混合模式)
基本上,此错误告诉您的是,您尝试使用此模块中的文件的符号链接存在问题。
Mac OS X's DYLD是操作系统的dynamic linker。它的工作或多或少是在请求资源时为操作系统加载共享库。
这可能会发生多种原因,从模块本身的更新过程失败到驱动器损坏等。
此特定问题的最常见修复(1)是删除node_modules文件夹并在本地和全局目录中运行新的NPM安装:
rm -rf node_modules/
npm install
您也可以尝试进行npm重建,但干净安装通常是最佳选择。
尝试通过编辑/Library/Java/JavaVirtualMachines/<version>.jdk/Contents/Info.plist
并在JVMCapabilities中添加JNI作为选项来手动启用JNI:
<key>JVMCapabilities</key>
<array>
...
<string>JNI</string>
</array>
如在https://github.com/joeferner/node-java/issues/223#issuecomment-110408072中找到的