javascript - jni.h 文件未找到 - 在 OS X El Capitan 上安装 node-java 模块

标签 javascript java node.js selenium-webdriver java-native-interface

我正在尝试安装 node-java允许 Node.js 连接到现有的 Java 的模块蜜蜂。这是我用来安装此模块的命令:

sudo npm install java -g



这是我得到的错误的堆栈跟踪:
> java@0.7.2 install /usr/local/lib/node_modules/java
> node-gyp rebuild

CXX(target) Release/obj.target/nodejavabridge_bindings/src/java.o
In file included from ../src/java.cpp:1:
../src/java.h:7:10: fatal error: 'jni.h' file not found
#include <jni.h>
     ^
1 error generated.
make: *** [Release/obj.target/nodejavabridge_bindings/src/java.o]         Error 1
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit     (/usr/local/lib/node_modules/npm/node_modules/node-   gyp/lib/build.js:267:23)
gyp ERR! stack     at ChildProcess.emit (events.js:98:17)
gyp ERR! stack     at Process.ChildProcess._handle.onexit    (child_process.js:810:12)
gyp ERR! System Darwin 15.6.0
gyp ERR! command "node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /usr/local/lib/node_modules/java
gyp ERR! node -v v0.10.33
gyp ERR! node-gyp -v v1.0.1
gyp ERR! not ok

这里要注意的有趣的事情是,我可以使用 在本地安装相同的模块。 npm install java 安装它的命令:
/Users/[$my_username]/node_modules

这是一些附加信息:

Node


v0.10.33

Java


java version "1.8.0_101"
Java(TM) SE Runtime Environment (build 1.8.0_101-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)

$JAVA_HOME


/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/include

locate jni.h


/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/JavaVM.framework/Versions/A/Headers/jni.h
 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift-migrator/sdk/MacOSX.sdk/System/Library/Frameworks/JavaVM.framework/Versions/A/Headers/jni.h
/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/include/jni.h
 /Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/include/jni.h

最佳答案

我知道这篇文章很旧,但它是排名第一的搜索,这就是我尝试使用 Java 1.8 安装 node-java 时解决这个问题的方法
JAVA_HOME 指向错误的位置。
它应该是:

/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/
正确设置它的最佳方法是导出它:
export JAVA_HOME=`/usr/libexec/java_home -v 1.8.0`
在 Mac 系统中,我注意到如果您在指定版本的末尾不包含 0,它将提取 JRE 位置,而不是 node-gyp 使用的 JDK。
此外,您想验证 JAVA_HOME 是否正确导出,您可以通过在终端中运行以下命令来验证这一点:
echo $JAVA_HOME

关于javascript - jni.h 文件未找到 - 在 OS X El Capitan 上安装 node-java 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39428191/

相关文章:

java - 无法使用 NetBeans 和 Glassfish 服务器部署 WebService

node.js - JSON - 发送后无法发送 header

mysql - 我正在使用 Reactjs、nodejs 开发一个应用程序。我如何动态连接两个不同的数据库(mysql和couchbase)

node.js - 当 'selfHandleResponse' 为真时,如何传递代理响应?

javascript - 数据库 Array to string converted divided |符号

php - Ajax 中的 RSS 阅读器 : Help with code, 有什么问题/缺失?

javascript - 使用 Javascript 和 Django 模板动态加载 HTML 图像

java - 优化基于 JTextField 的所选按钮的文本

java - 不同Android设备上的不同游戏行为

javascript - 如何在 JavaScript Date() 中仅获取一周中的日期名称或数字