首页 > 解决方案 > 致命错误:在 Mac OSX 10.15.7 上找不到“jni.h”文件

问题描述

我试图用 C 中的一些库运行一个旧的 java 程序。在运行make命令时,我一直遇到这个错误,我认为这与JAVA_HOME 设置有关

swig/main_6_comp_wrap.c:154:10: 

fatal error: jni.h: No such file or directory
#include <jni.h>
          ^~~~~~~

在多次尝试使用 Homebrew 安装 JDK、swig 和 gcc 后,它没有成功。我很确定 jni.h 文件位于JAVA_HOME的包含文件夹中。

JAVA_HOME   = /Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home/
JDK_HOME    = $(JAVA_HOME)
JRE_HOME    = $(JAVA_HOME)

SWIG        = swig
CC          = gcc
CFLAGS          = -O2 -fno-strict-aliasing -Wall -fno-common \
          -I/System/Library/Frameworks/JavaVM.framework/Headers/
BUILDLIB    = gcc -shared
LIB6        = java/classes/libC6_comp_backend.jnilib
LIB21       = java/classes/libC21_comp_backend.jnilib

系统:MacOS Catalina 10.15.7 swig:3.0.12 gcc:10.2.0

标签: gccmakefileswigjava-home

解决方案


您至少需要在 CFLAGS 中-I/System/Library/Frameworks/JavaVM.framework/Headers/替换为。-I$JAVA_HOME/include您可能还需要添加-I$JAVA_HOME/include/darwin.

您还需要更改用于链接.jnilib


推荐阅读