mediainfo ライブラリを使用している Java プロジェクトに取り組んでいます。Windows で midiainfo.dll を使用した JNA コードは正常に動作しますが、Linux でコードを実行すると動作せず、次の例外が発生します -
java.lang.UnsatisfiedLinkError: Unable to load library 'MediaInfo': libMediaInfo.so: cannot open shared object file: No such file or directory
私はこのように私のjaveコードを書きました -
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);
}
クラスパスにmediainfo.dllを追加するだけでこれは魔法のように機能しますが、Linuxではlibmediainfo.so.0、libmediainfo.so.0.0.0、libzen.so.0、libzen.so.0.0.0を追加しようとしましたしかし、運が悪い...
Linux で mediainfo+java を実行する方法を知っている人はいますか?
Java 6、CentOS 5.6 の最終版および最新の mediainfo バージョンを使用しています。