Sembra così. #include "jni_md.h"
includerebbe il file nella stessa directory di jni.h
, ma è inserito in linux
cartella.
Nelle precedenti versioni di JDK sembra che il file e un altro fossero posti in include/linux
cartella, ma ci sono collegamenti simbolici a entrambi i file in include
.
Quindi puoi semplicemente creare collegamenti simbolici a entrambi i file:
$ 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
Modifica
Come affermato nei commenti di Absurd-Mind e Mikkel, c'è anche la possibilità di aggiungere quel percorso alle opzioni del compilatore makefile:
-I$(JAVA_HOME)/include/linux/
No, questo non è un bug. Il modo corretto per risolvere questo problema è fornire -I${JAVA_HOME}/include -I${JAVA_HOME}/include/linux
opzioni del compilatore. In questo modo i tuoi script di build rimangono portabili.
L'OP sta affrontando il problema su Linux, ma se qualcuno sta affrontando questo problema su Windows, aggiungi le seguenti opzioni del compilatore.
-I"%JAVA_HOME%\include" -I"%JAVA_HOME%\include\win32"
dove JAVA_HOME punta alla directory di installazione di JDK, solitamente 'C:\Program Files\Java\jdk1.{7|8}.{}_{xx}'