web-dev-qa-db-ja.com

jni.h:そのようなファイルまたはディレクトリはありません

私は このチュートリアル に従っており、ステップ5でGCCから次の出力を取得しています。

    HelloWorld.c:1:17: error: jni.h: No such file or directory
    In file included from HelloWorld.c:3:
    HelloWorld.h:15: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘void’
    HelloWorld.c:5: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘void’

彼のインクルードディレクトリはシステムによって異なることを知っているので、それに応じてコマンドを調整しようとしましたが、システム上に正しいディレクトリが見つからないようです。 Ubuntu 10.04LTSを使用しています。

31
Jack H

端末を開いて次のように入力します。

locate jni.h

これにより、jni.hというすべてのファイルがシステム上のどこにあるかがわかります。私はubuntu 11.04を使っていて、次の場所にあります:

/usr/lib/jvm/Java-6-openjdk/include/jni.h
/usr/lib/jvm/Java-6-Sun-1.6.0.26/include/jni.h

リポジトリから取得する必要がある場合もあります。

Sudo apt-get install openjdk-6-jdk 

あなたはそれをインストールしていない場合はトリックを行う必要があります。

27
Leif Andersen

jni.hはJDKに同梱されています。私にとっては:jdk1.6.0_25/include/

また、デフォルトでは、Ubuntuに開発ライブラリを備えたJDKがあるとは思わないため、Oracleから 最新のJDKバージョン をダウンロードして、どこかにインストールします。

または、openjdkを10.04 LTSで動作する場合は@Leifが推奨するようにインストールできます。個人的には、Sun/Oracleの方が好きです。

5
Alex Gitelman

Ubuntu 14.04で実行:

Sudo apt-get install openjdk-7-jdk openjdk-7-jre-lib

これで、ヘッダーが/ usr/lib/jvm/Java-7-openjdk-AMD64/includeにあります

OpenJDK 6の場合:

Sudo apt-get install openjdk-6-jdk openjdk-6-jre-lib
2
Max Vyaznikov