nazareno ejemplos java jni classpath

nazareno - jni java ejemplos



cómo hacer que se encuentre jni.h? (6)

Tienes que decirle a tu compilador dónde está el directorio de inclusión. Algo como esto:

gcc -I/usr/lib/jvm/jdk1.7.0_07/include

Pero depende de tu archivo MAKE.

En Ubuntu 12.04, tengo jdk7 de sun / oracle instalado. Cuando locate jni.h , imprime varias ubicaciones

/usr/lib/jvm/java-6-openjdk-amd64/include/jni.h /usr/lib/jvm/jdk1.7.0_07/include/jni.h ...

En el archivo de encabezado generado por JDK, hay include <jni.h> , y actualmente se queja

fatal error: jni.h: No such file or directory.

En mi Makefile , no hay especificaciones de ubicaciones donde jni.h es. Y estoy preguntando si es posible configurar cierto parámetro del sistema para hacer que se jni.h ruta de jni.h (por ejemplo, /usr/lib/jvm/jdk1.7.0_07/include/jni.h ) al compilarse.


Usa el siguiente código:

make -I/usr/lib/jvm/jdk*/include

donde jdk * es el nombre del directorio de su instalación de jdk (por ejemplo, jdk1.7.0).

Y no habría una solución para todo el sistema ya que el nombre del directorio sería diferente con diferentes compilaciones de JDK descargadas e instaladas. Si desea una solución automatizada, incluya todos los comandos en una sola secuencia de comandos y ejecute dicha secuencia de comandos en la Terminal.


La instalación del kit de desarrollo OpenJDK (JDK) debería solucionar su problema.

sudo apt-get install openjdk-X-jdk

Esto debería permitirle compilar sin problemas.


Por lo general, defino mi variable JAVA_HOME de la siguiente manera:

export JAVA_HOME=/usr/lib/jvm/java/

Ahí están los archivos de inclusión necesarios. A veces agrego lo siguiente a mi .barshrc cuando compilo muchas cosas que lo necesitan.


Necesita ambos archivos jni.h y jni_md.h , prueba esto

gcc -I/usr/lib/jvm/jdk1.7.0_07/include / -I/usr/lib/jvm/jdk1.7.0_07/include/linux filename.c

Esto incluirá tanto los archivos JNI amplios como los necesarios para Linux


Establecer JAVA_INCLUDE_DIR donde se encuentra jni.h debería resolver su problema (el ajuste de CPPFLAGS no funcionó para mí)

Suponiendo que sea / usr / lib64 / java / include;

export JAVA_INCLUDE_DIR=/usr/lib64/java/include