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.
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