pythonlucenejcc

Trying to install lucene for python. First need to install jcc. When building setup.py for jcc, I get the error ld: library not found for -ljava


Trying to install lucene for python. First need to install jcc. When building setup.py for jcc, I get the error ld: library not found for -ljava

Entire error can be found [here][1]: 

this is code

Solution

  • The documentation for JCC states:

    JCC’s setup.py file needs to be edited before building JCC to specify the location of the Java Runtime Environment’s header files and libraries.

    See also building JCC.

    On my OSX system, the discovered JAVAHOME and JAVAFRAMEWORKS are echoed when running install:

    $ python setup.py install
    found JAVAHOME = /Library/Java/JavaVirtualMachines/jdk1.8.0_141.jdk/Contents/Home
    found JAVAFRAMEWORKS = /System/Library/Frameworks/JavaVM.framework
    ...
    

    I tested with Python 2.7. Also, from the jcc source directory:

    >>> from helpers2.darwin import JAVAHOME, JAVAFRAMEWORKS
    found JAVAHOME = /Library/Java/JavaVirtualMachines/jdk1.8.0_141.jdk/Contents/Home
    found JAVAFRAMEWORKS = /System/Library/Frameworks/JavaVM.framework
    

    If your JAVAHOME isn't discovered, you can set the environment variable JCC_JDK. Example:

    $ ls /Library/Java/JavaVirtualMachines/
    jdk1.7.0_80.jdk     jdk1.8.0_25.jdk
    jdk1.8.0_141.jdk    jdk1.8.0_91.jdk
    $ JCC_JDK=/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home python setup.py install
    

    In this case it looks like jdk1.7.0_80 is used for the compilation, but the first two line of output are:

    found JAVAHOME = /Library/Java/JavaVirtualMachines/jdk1.8.0_141.jdk/Contents/Home
    found JAVAFRAMEWORKS = /System/Library/Frameworks/JavaVM.framework
    

    So that seems misleading, but appears to still work correctly.