GNU/Linux >> LINUX-Kenntnisse >  >> Linux

JDK 1.8 unter Linux fehlt die JNI-Include-Datei

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


Linux
  1. Eine Einführung in die Linux-Datei /etc/fstab

  2. Grundlegendes zur Konfigurationsdatei /etc/profile unter Linux

  3. Wie erstelle ich eine Datei in Linux aus dem Terminalfenster?

  4. echo oder print /dev/stdin /dev/stdout /dev/stderr

  5. Wie erstelle ich in meiner Datei /etc/hosts/ unter Linux/OSX eine Wildcard-Subdomain?

Was ist Fstab unter Linux | Eine Einführung in die Linux-Datei /etc/fstab

Linux:Unterschied zwischen /dev/console , /dev/tty und /dev/tty0?

/dev/null unter Linux

/proc/cpuinfo- und /proc/meminfo-Dateien unter Linux

Was ist die Datei /etc/passwd unter Linux?

Verstehen der /etc/fstab-Datei unter Linux