Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Stanford CoreNLP python interface installation errors

I'm trying to build the python interface of the stanford NLP on Ubuntu 12.04.5 LTS. There are two steps required, the first of which is:

  1. compile Jpype by running "rake setup" in 3rdParty/jpype

When doing so I get the following error:

In file included from src/native/common/jp_monitor.cpp:17:0:
src/native/common/include/jpype.h:45:17: fatal error: jni.h: No such file or directory
compilation terminated.
error: command 'gcc' failed with exit status 1
rake aborted!
Command failed with status (1): [cd JPype-0.5.4.1 && python setup.py build...]

The error messages says I'm missing jni.h, so as suggested here if I ran the command dpkg-query -L openjdk-7-jdk | grep "jni.h" getting /usr/lib/jvm/java-7-openjdk-amd64/include/jni.h.

I believe that means I do have jni.h on my system, so I'm very confused right now. What is causing the error? Can you suggest any fix?

Thanks for your help!


A FEW MORE INSIGHTS

Here is the instruction causing the error:

gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -I/usr/lib/jvm/java-1.5.0-sun-1.5.0.08/include -I/usr/lib/jvm/java-1.5.0-sun-1.5.0.08/include/linux -Isrc/native/common/include -Isrc/native/python/include -I/usr/include/python2.7 -c src/native/common/jp_class.cpp -o build/temp.linux-x86_64-2.7/src/native/common/jp_class.o
cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for Ada/C/ObjC but not for C++ [enabled by default]
In file included from src/native/common/jp_class.cpp:17:0:src/native/common/include/jpype.h:45:17: fatal error: jni.h: No such file or directory
compilation terminated.
error: command 'gcc' failed with exit status 1

It's coming from the compilation of JPype needed for the python interface. I do not know why but it includes paths that I don't have in my filesystem (i.e. -I/usr/lib/jvm/java-1.5.0-sun-1.5.0.08/include/linux).

How can I configure these paths correctly?

like image 301
Matteo Avatar asked Sep 29 '22 11:09

Matteo


2 Answers

The include paths specified do not include the path where jni.h is located.

From your grep, jni.h is located here: /usr/lib/jvm/java-7-openjdk-amd64/include/jni.h

The include paths specified in the gcc args are: -I/usr/lib/jvm/java-1.5.0-sun-1.5.0.08/include -I/usr/lib/jvm/java-1.5.0-sun-1.5.0.08/include/linux -Isrc/native/common/include -Isrc/native/python/include -I/usr/include/python2.7

Sounds to me that you are building with the wrong java? You have a java-1.5.0 install and a java-7-openjdk install - this one has the missing jni.h file.

like image 104
vikramls Avatar answered Oct 02 '22 15:10

vikramls


Based on the following question, it seems like you can fix this by setting JAVA_HOME.

JPype compile problems

So before building use:

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
like image 29
kichik Avatar answered Oct 02 '22 17:10

kichik