GNU/Linux >> Linux の 問題 >  >> Linux

Linux 上の JDK 1.8 に JNI インクルード ファイルがない

そのようです。 #include "jni_md.h" jni.h と同じディレクトリにファイルが含まれます 、しかしそれは linux に配置されています

以前のJDKバージョンでは、ファイルと別のファイルが include/linux に配置されていたようです フォルダですが、include には両方のファイルへのシンボリック リンクがあります。 .

したがって、両方のファイルへのシンボリック リンクを作成するだけです:

$ 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

編集

Absurd-Mind と Mikkel によるコメントで述べられているように、そのパスを makefile コンパイラ オプションに追加するオプションもあります。

-I$(JAVA_HOME)/include/linux/

いいえ、これはバグではありません。この問題を解決する正しい方法は、-I${JAVA_HOME}/include -I${JAVA_HOME}/include/linux を提供することです コンパイラ オプション。こうすることで、ビルド スクリプトの移植性が維持されます。

OP は Linux で問題に直面していますが、Windows でこの問題に直面している場合は、次のコンパイラ オプションを追加してください。

-I"%JAVA_HOME%\include" -I"%JAVA_HOME%\include\win32" ここで、JAVA_HOME は JDK インストール ディレクトリを指します。通常は 'C:\Program Files\Java\jdk1.{7|8}.{}_{xx}' です。


Linux
  1. Linux / etc/fstabファイルの紹介

  2. Linuxは複数の連続したパスセパレーター(/ home //// username /// file)をどのように処理しますか?

  3. Linux:/ dev / console、/ dev / tty、/ dev / tty0の違いは?

  1. Linux – / usr/binと/usr/sbinを/bin(gnu / linux)にマージしますか?

  2. Linux のサンプル /etc/services ファイル

  3. Linux の /dev/zero および /dev/null ファイルとは

  1. Linux の /etc/profile 構成ファイルについて

  2. /dev/shm/ と /tmp/ はいつ使用する必要がありますか?

  3. unix:///var/run/supervisor.sock そのようなファイルはありません