Fatal error: jni_md.h: No such file or directory #include "jni_md.h"

Executing a command gccon ubuntu to generate a .a or .so file for JNI, we get below errors for openjdk 8 / oraclejdk8.

$gcc -I/usr/lib/jvm/java-8-openjdk-amd64/include -c MainImpl1.c -o MainImpl1.o

In file included from MainImpl1.c:1:0:
/usr/lib/jvm/java-8-openjdk-amd64/include/jni.h:45:20: fatal error: jni_md.h: No such file or directory
 #include "jni_md.h"
                ^
compilation terminated.

$gcc -I/usr/lib/jvm/java-8-oracle/include -c MainImpl1.c -o MainImpl1.o

In file included from MainImpl1.c:1:0:
/usr/lib/jvm/java-8-oracle/include/jni.h:45:20: fatal error: jni_md.h: No such file or directory
 #include "jni_md.h"
                ^
compilation terminated.

I gave an example for generating a .a file, but the same problem is observed for generating a .so file.

But the same command gccworks for openjdk7 / oraclejdk7.

What is the problem?

+4
source share
1 answer

I think you have not added an include directory that includes jni_md.h, which is platform dependent .

Try

$gcc -I/usr/lib/jvm/java-8-openjdk-amd64/include -I/usr/lib/jvm/java-8-openjdk-amd64/include/linux -c MainImpl1.c -o MainImpl1.o

or

$gcc -I/usr/lib/jvm/java-8-oracle/include -I/usr/lib/jvm/java-8-oracle/include/linux -c MainImpl1.c -o MainImpl1.o

If you do not know where jni_md.h is located, use find:

find / -name jni_md.h 2> /dev/null
+6

All Articles