Es scheint so. #include "jni_md.h"
würde die Datei in dasselbe Verzeichnis wie jni.h
einfügen , aber es wird in linux
platziert Ordner.
In früheren JDK-Versionen scheint es, dass eine Datei und eine andere in include/linux
platziert wurden Ordner, aber es gibt symbolische Links zu beiden Dateien in include
.
Sie können also einfach Symlinks zu beiden Dateien erstellen:
$ 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
Bearbeiten
Wie in den Kommentaren von Absurd-Mind und Mikkel erwähnt, gibt es auch die Option, diesen Pfad zu den Makefile-Compileroptionen hinzuzufügen:
-I$(JAVA_HOME)/include/linux/
Nein, das ist kein Fehler. Der richtige Weg, dieses Problem zu lösen, ist die Angabe von -I${JAVA_HOME}/include -I${JAVA_HOME}/include/linux
Compiler-Optionen. Auf diese Weise bleiben Ihre Build-Skripte portabel.
Das OP hat das Problem unter Linux, aber wenn jemand dieses Problem unter Windows hat, fügen Sie bitte die folgenden Compiler-Optionen hinzu.
-I"%JAVA_HOME%\include" -I"%JAVA_HOME%\include\win32"
wobei JAVA_HOME auf Ihr JDK-Installationsverzeichnis zeigt, normalerweise 'C:\Program Files\Java\jdk1.{7|8}.{}_{xx}'