首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >配置libmediainfo以使用Java项目,而无需在所有平台上安装(OSes)

配置libmediainfo以使用Java项目,而无需在所有平台上安装(OSes)
EN

Stack Overflow用户
提问于 2013-04-12 23:27:32
回答 1查看 1.9K关注 0票数 1

我正在使用mediainfo (http://mediainfo.sourceforge.net/en)从音频和视频文件中提取信息。

我的java项目可以在所有平台(osx、win和linux)上运行。到目前为止,我只在osx上测试过mediainfo,那里的过程很简单:只需将libmediainfo.dylib放在目标文件夹中,并使用本地库访问它,就可以了。这个解决方案可以完美地工作。

我现在希望将此功能扩展到其他操作系统,从Linux开始。然而,事实证明这是一个比我想象的更大的挑战。一开始,我一直得到这样的结果:

代码语言:javascript
复制
"java.lang.UnsatisfiedLinkError: Unable to load library 'mediainfo': libmediainfo.so: cannot open shared object file: No such file or directory"

在/usr/lib中查找时,这是意料之中的

但是通过安装http://mediainfo.sourceforge.net/en/Download/Ubuntu提供的合适的libmediainfo0 & libzen0 ".deb“解决了这个问题

尽管如此,我的解决方案需要是可移植的,也就是说,我希望所有必要的资源都包含在java项目包中,而不需要任何进一步的安装。我还需要知道是否可以将mediainfo更改为在我的java包中查找资源,而不是系统位置。

作为参考,我使用Java Native Access (jna)与库进行交互。还使用了网站推荐的MediaInfo.java和MediaInfoLibrary.java类。如果您需要其他详细信息,请告诉我。

任何智慧都非常感谢,谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-19 22:41:12

最新版本的JNA (3.5.2)将自动解压本机库bundled as resources (无论是基于文件还是基于jar)。

如果您将linux/amd64共享库作为/linux-x86-64/libmylibrary.so包含在您的某个jar文件中,那么当您调用Native.loadLibrary("my library")时,JNA将自动提取并加载它。旧版本的JNA要求您在LD_LIBRARY_PATH (envariable)或jna.library.path (系统属性)上提供该库。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15975296

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档