GNU/Linux >> Znalost Linux >  >> Linux

JDK 1.8 na Linuxu chybí zahrnutí souboru JNI

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}'


Linux
  1. Úvod do souboru Linux /etc/fstab

  2. Jak Linux zpracovává více po sobě jdoucích oddělovačů cest (/home////username///soubor)?

  3. Linux – účel adresáře /net?

  1. Linux – sloučení /usr/bin A /usr/sbin do /bin (gnu/linux)?

  2. Ukázkový soubor /etc/services v Linuxu

  3. Co jsou soubory /dev/zero a /dev/null v Linuxu

  1. Jak vytvořit soubor v Linuxu z okna terminálu?

  2. unix:///var/run/supervisor.sock žádný takový soubor

  3. echo nebo print /dev/stdin /dev/stdout /dev/stderr