在 Mac 上需要在 cmake 中找到 jni.h

在 Mac 上需要在 cmake 中找到 jni.h

我正在尝试在 Mac Air 机器上编译 VTK。我使用的是 CMake 2.8-9,使用 Xcode4 作为生成器。如果我按下“配置”按钮,并且未选中 VTK_WRAP_JAVA,则不会出现任何错误。但是我肯定需要使用包装 Java,因为我的主程序是 Java,而我需要转到 VTK,它是 c++。

当我检查 Java 包装时,我得到了“找不到 JNI”。它显然是在寻找 jni.h,在 Linux 中查找没有问题,但在 Mac 中显然找不到它。

我定位了 jni.h 并得到了

new-host-2:~ geraldkolodny$ locate jni.h
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/System/Library/Frameworks/JavaVM.framework/Versions/A/Headers/jni.h
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/System/Library/Frameworks/JavaVM.framework/Versions/A/Headers/jni.h
/Library/Java/JavaVirtualMachines/jdk1.7.0_07.jdk/Contents/Home/include/jni.h

我尝试手动将条目 2 或 3(末尾不带 jni.h)放入 JAVA_INCLUDE_PATH2,但仍然找不到 jni.h。

Xcode 曾经有一个 jni 模板,但在最新版本中已经不存在了。我对如何解决这个问题已经没有什么想法了。如果能提供任何建议,我将不胜感激。

答案1

我正在尝试使用 SWIG 为我开发的 C++ 数值算法创建一个 Java 接口。我能够在工作中(在 Linux blade 上)成功完成此操作,但在家用 Mac 上执行此操作时遇到了问题,因为当我运行小型构建脚本来编译 SWIG 包装器类时,我同样会收到有关无法找到 jni.h 的投诉。

在查看文档页面和苹果支持后,我能够在我的系统上找到 jni.h:

/System/Library/Frameworks/JavaVM.framework/Headers/jni.h

(这也可能是之前安装了 Java 开发工具和运行时的结果)

当我在构建脚本中添加此包含路径时:

g++  -fpic -I. -I/System/Library/Frameworks/JavaVM.framework/Headers -c *cpp

这个错误投诉已经消失。不是完全相同的开发问题,但如果您引用 jni.h 的这个位置,您的构建错误可能也会消失。

相关内容