这个错误是什么意思?
我需要做些什么来解决它?
我正在尝试在Mac OS El Captain上为node.js(特别是xslt4node)运行基于java的模块,但每次出现此错误。对于Windows用户来说,一切似乎都运行正常。完整错误如下:
dyld:惰性符号绑定失败:未找到符号:_JNI_CreateJavaVM 参考自: /projects/main-project/node_modules/java/build/Release/nodejavabridge_bindings.node 期望:平面命名空间
dyld:未找到符号:_JNI_CreateJavaVM引自: /projects/main-project/node_modules/java/build/Release/nodejavabridge_bindings.node 期望:平面命名空间
我发现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运行时环境 (build 9.0.1 + 11)Java HotSpot(TM)64位服务器VM(版本9.0.1 + 11, 混合模式)
答案 0 :(得分:0)
基本上,此错误告诉您的是,您尝试使用此模块中的文件的符号链接存在问题。
Mac OS X's DYLD是操作系统的dynamic linker。它的工作或多或少是在请求资源时为操作系统加载共享库。
这可能会发生多种原因,从模块本身的更新过程失败到驱动器损坏等等。
此特定问题的最常见修复(1)是删除node_modules文件夹并在本地和全局目录中运行新的NPM安装:
rm -rf node_modules/
npm install
您也可以尝试进行npm重建,但干净安装通常是最佳选择。
答案 1 :(得分:0)
尝试通过编辑/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
中找到答案 2 :(得分:0)
尝试xcode-select --install
,然后npm rebuild
检查this线程,问题似乎是苹果的xcode(在你的情况下它可能是c ++编译器),讨论是针对ruby vm但可能与jvm类似。
通常检查/更新您的c ++ / c编译器,然后尝试其他任何操作,例如选择其他Java版本并将JNI添加到功能中。最后提到node-gyp需要python版本2.x,如node-java的README中所述。
答案 3 :(得分:-1)
我终于搞清楚了!
我需要这个npm包让node-java在我的机器https://www.npmjs.com/package/winreg
上正常工作 npm install winreg
解决了所有问题