Search code examples
javajnamediainfo

Unable to load library MediaInfo in linux


I am working on a java project where I am using mediainfo libraries. My JNA code with midiainfo.dll in windows works fine, but when I run my code in linux it is not working and giving following exception -

java.lang.UnsatisfiedLinkError: Unable to load library 'MediaInfo': libMediaInfo.so: cannot open shared object file: No such file or directory

I have written my jave code like this -

interface MediaInfoDLL_Internal extends Library
{

    MediaInfoDLL_Internal INSTANCE = (MediaInfoDLL_Internal) Native.loadLibrary("MediaInfo", MediaInfoDLL_Internal.class, singletonMap(OPTION_FUNCTION_MAPPER, new FunctionMapper()
        {

            public String getFunctionName(NativeLibrary lib, Method method)
            {
                // MediaInfo_New(), MediaInfo_Open() ...
                return "MediaInfo_" + method.getName();
            }
        }
    ));


    //Constructor/Destructor
    Pointer New();
    void Delete(Pointer Handle);

    //File
    int Open(Pointer Handle, WString file);
    void Close(Pointer Handle);

    //Infos
    WString Inform(Pointer Handle);
    WString Get(Pointer Handle, int StreamKind, int StreamNumber, WString parameter, int infoKind, int searchKind);
    WString GetI(Pointer Handle, int StreamKind, int StreamNumber, int parameterIndex, int infoKind);
    int     Count_Get(Pointer Handle, int StreamKind, int StreamNumber);

    //Options
    WString Option(Pointer Handle, WString option, WString value);
}

and just by adding mediainfo.dll in classpath this is working like magic, but in linux i have tried to add libmediainfo.so.0, libmediainfo.so.0.0.0, libzen.so.0 and libzen.so.0.0.0 but no luck...

Does anybody know how to run mediainfo+java in linux?

I m using Java 6, CentOS 5.6 final and latest mediainfo version.


Solution

  • I solved my problem by making symlink

    I have used following commands from superuser

    $ sudo ln -s /usr/lib/libmediainfo.so.0 /usr/lib/libMediaInfo.so
    $ sudo ln -s /usr/lib/libzen.so.0 /usr/lib/libzen.so