我正在开发一个使用 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
我已经像这样编写了我的 java 代码 -
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 版本。