我下载并安装了一个fat-jar eclipse插件,以便能够打包包含外部库(JMF)的项目。但是当我运行应用程序时,它会显示“找不到设备”。这是否意味着jmf.jar未包含在新的jar文件中,因为它无法检测到网络摄像头?因为当我在eclipse中运行应用程序时,没有错误,它可以毫无困难地检测网络摄像头。
我该如何解决这个问题?
答案 0 :(得分:3)
不,“找不到设备”是典型的JMF响应 - 它似乎找不到视频/音频输入或输出设备。所以我认为JMF确实在你的罐子里而且只是抱怨。
打包的课程中是否有可能缺少某些内容? Eclipse中类路径上的东西,但不包含在你的大罐子里?
<强>更新强>
我只记得问题出在哪里:出于性能原因等,JMF使用本机代码;安装JMF安装DLL(Windows)或.so(Linux / Mac?)。我猜想当你对类路径进行如此深远的改动时,JMF在查找这些组件时遇到了一些麻烦。
我相信还有一个软件模拟驱动程序可用。您可以尝试使用它并查看它是否可以从罐子中正常工作?
答案 1 :(得分:1)
我刚才遇到了同样的问题,不知道你是否已经这样做但我通过将jmf.properties文件添加到与.jar文件所在的目录相同的目录来解决它。您可以在JMF安装目录的lib目录中找到jmf.properties。只需复制并粘贴即可。
答案 2 :(得分:0)
可能是fatjar使用静态代码分析来确定生成的JAR中的哪些类文件,以及JMF正在使用动态技术从其他jar中加载基于某种注册表的类。找到的一种方法是使用-verbose:class
开关运行应用程序,然后筛选输出以查看无法加载的类。
答案 3 :(得分:0)
我发现a post in the Sun forums其他人在使用JMF时遇到了麻烦。一位回应者建议:
尝试FMJ(http://www.fmj-sf.net/)或gstreamer-java(http://code.google.com/p/gstreamer-java/)。
切换媒体框架产品可能是一种解决方案(尽管当然难以保证)。
答案 4 :(得分:0)
请确保您的jar路径,jar路径不应该是其他路径,如D:或E :,它应该是jmf安装目录,如C:\ Program Files(x86)\ JMF2.1.1e \ lib \ jmf。罐。希望这会对你有所帮助。