Dyld: Символ не найден: _JNI_CreateJavaVM

Что означает эта ошибка?

Что мне нужно сделать, чтобы решить эту проблему?

Я пытаюсь запустить java-модуль для node.js(в частности, xslt4node) на Mac OS El Капитан, но каждый раз, когда я получаю эту ошибку. Кажется, что все работает нормально для пользователей Windows. Полная ошибка ниже:

dyld: lazy symbol binding failed: Symbol not found: _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 символы для архитектуры x86_64: JNI_CreateJavaVM OS-X Xcode, который наиболее близок мне, что объясняет мою точную проблему, но я не используя xcode для разработки, я на платформе node.js.

Кто-нибудь еще видел это раньше? Что это значит?

До сих пор я пробовал:

  • Изменение версий Java
  • Удаление и восстановление node_moudles
  • Добавление возможностей JVM <string>JNI</string>
  • Удаление Java для каждой документации: https://www.java.com/en/download/help/mac_uninstall_java.xml запуск этих команд ничего не делает:

Пользователь: ~ kawnah $sudo rm -fr /Library/PreferencePanes/JavaControlPanel.prefПанель пользователя: ~ kawnah $sudo rm -fr ~/Library/Приложение\Поддержка/Пользователь Java: ~ kawnah $java -version java version "9.0.1" Java (TM) SE Runtime Environment (сборка 9.0.1 + 11) Виртуальная виртуальная машина на базе Java HotSpot TM (сборка 9.0.1 + 11, смешанный режим)

  1. Попытка использования другой версии node (7.10.0)
  2. Полностью удалить node/npm и переустановить

Ответ 1

Я НАКОНЕЦ понял это!

Мне нужен этот пакет npm для node -java для правильной работы на моей машине https://www.npmjs.com/package/winreg

npm install winreg разрешено все проблемы

Ответ 2

В основном, эта ошибка говорит вам, что существует проблема с символической ссылкой на файл в этом модуле, который вы пытаетесь использовать.

Mac OS X DYLD - это ОС динамический компоновщик. Его задача - более или менее - загружать совместно используемые библиотеки для ОС при запросе ресурсов.

Существует ряд причин, из-за неудачного процесса обновления на самом модуле, чтобы привести к повреждению и т.д.

Наиболее распространенным решением (1) для этой конкретной проблемы является удаление вашей папки node_modules и запуск новой установки NPM в локальных и глобальных каталогах:

rm -rf node_modules/
npm install

Вы также можете попытаться восстановить npm, но чистая установка, как правило, лучший путь для перехода.


Ответ 3

Попробуйте вручную включить JNI, отредактировав /Library/Java/JavaVirtualMachines/<version>.jdk/Contents/Info.plist и добавив JNI в качестве опции в JVMCapabilities:

<key>JVMCapabilities</key>
<array>
    ...
    <string>JNI</string>
</array>

Как найдено в https://github.com/joeferner/node-java/issues/223#issuecomment-110408072

Ответ 4

Попробуйте xcode-select --install, а затем npm rebuild Проверьте этот поток, проблема кажется яблочным xcode (в вашем случае это может быть компилятор С++), обсуждение для ruby ​​vm, но может быть аналогично для jvm.

Обычно проверяйте/обновляете свой компилятор С++/c, а затем попробуйте что-нибудь еще, например, выберите другую версию java и добавьте JNI к возможностям. Последнее, что нужно упомянуть node -gyp, нуждается в python версии 2.x, как указано в README node -java.