そのようです。 #include "jni_md.h"
jni.h
と同じディレクトリにファイルが含まれます 、しかしそれは linux
に配置されています
以前のJDKバージョンでは、ファイルと別のファイルが include/linux
に配置されていたようです フォルダですが、include
には両方のファイルへのシンボリック リンクがあります。 .
したがって、両方のファイルへのシンボリック リンクを作成するだけです:
$ sudo ln -s /opt/jdk1.8.0_11/include/linux/jni_md.h /opt/jdk1.8.0_11/include/jni_md.h
$ sudo ln -s /opt/jdk1.8.0_11/include/linux/jawt_md.h /opt/jdk1.8.0_11/include/jawt_md.h
編集
Absurd-Mind と Mikkel によるコメントで述べられているように、そのパスを makefile コンパイラ オプションに追加するオプションもあります。
-I$(JAVA_HOME)/include/linux/
いいえ、これはバグではありません。この問題を解決する正しい方法は、-I${JAVA_HOME}/include -I${JAVA_HOME}/include/linux
を提供することです コンパイラ オプション。こうすることで、ビルド スクリプトの移植性が維持されます。
OP は Linux で問題に直面していますが、Windows でこの問題に直面している場合は、次のコンパイラ オプションを追加してください。
-I"%JAVA_HOME%\include" -I"%JAVA_HOME%\include\win32"
ここで、JAVA_HOME は JDK インストール ディレクトリを指します。通常は 'C:\Program Files\Java\jdk1.{7|8}.{}_{xx}'
です。