Vypadá to tak. #include "jni_md.h"
by obsahoval soubor ve stejném adresáři jako jni.h
, ale je umístěn v linux
složka.
V předchozích verzích JDK se zdá, že soubor a další byly umístěny v include/linux
složky, ale v include
jsou na oba soubory symbolické odkazy .
Takže stačí vytvořit symbolické odkazy na oba soubory:
$ 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
Upravit
Jak je uvedeno v komentářích Absurd-Mind a Mikkel, existuje také možnost přidat tuto cestu do možností kompilátoru makefile:
-I$(JAVA_HOME)/include/linux/
Ne, to není chyba. Správným způsobem, jak tento problém vyřešit, je poskytnout -I${JAVA_HOME}/include -I${JAVA_HOME}/include/linux
možnosti kompilátoru. Tímto způsobem zůstanou vaše sestavení skripty přenosné.
Operační systém se potýká s problémem v Linuxu, ale pokud se někdo potýká s tímto problémem v systému Windows, přidejte následující možnosti kompilátoru.
-I"%JAVA_HOME%\include" -I"%JAVA_HOME%\include\win32"
kde JAVA_HOME ukazuje na váš instalační adresář JDK, obvykle 'C:\Program Files\Java\jdk1.{7|8}.{}_{xx}'