6

我刚刚开始使用 Xuggle,我将所有内容下载到 Eclipse 中,并将它们包含在引用库中,但我做了一个非常简单的测试,

package com.xuggle.xuggler.demos;
import com.xuggle.xuggler.IContainer;

public class getContainerInfo {
public static void main (String [] args){

     IContainer myContainer = IContainer.make();
    }
}

它会抛出一堆错误,

2011-06-12 16:26:52,142 [main] ERROR com.xuggle.ferry.JNILibraryLoader - Could not load library: xuggle-xuggler; version: 3; Visit http://www.xuggle.com/xuggler/faq/ to find common solutions to this problem
Exception in thread "main" java.lang.UnsatisfiedLinkError: no xuggle-xuggler in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1734)
    at java.lang.Runtime.loadLibrary0(Runtime.java:823)
    at java.lang.System.loadLibrary(System.java:1028)
    at com.xuggle.ferry.JNILibraryLoader.loadLibrary0(JNILibraryLoader.java:265)
    at com.xuggle.ferry.JNILibraryLoader.loadLibrary(JNILibraryLoader.java:168)
    at com.xuggle.xuggler.XugglerJNI.<clinit>(XugglerJNI.java:19)
    at com.xuggle.xuggler.IContainer.<clinit>(IContainer.java:1457)
    at com.xuggle.xuggler.demos.getContainerInfo.main(getContainerInfo.java:9)
4

2 回答 2

10

下面是我找到的。存在混淆,因为从 Xuggler 5.2 及更高版本开始,您不需要安装它并设置环境变量。

在网上寻找答案时,您可能会因为从旧版本和新版本中找到混合步骤而感到困惑。以下 (B) 中的步骤不再适用。

我自己最终通过确保 jar 位于 J2EE 容器库中并从 Xuggler 5.2 升级到 5.4 来解决问题。此后,链接错误消失了。


(A) 这适用于
Xuggler Docs中的所有版本:

将 Xuggler 与 J2EE 容器
一起使用 Xuggler 包含本机代码,因此需要对 J2EE 容器(如 Tomcat、Jetty 或 Glassfish)进行特殊安装。它必须安装在 J2EE 容器加载它的位置,而不是特定的 Web 应用程序(除非您可以保证您的应用程序是服务器中将加载 Xuggler 的唯一应用程序)。您必须查找特定容器的特定文档,但例如,对于 Tomcat,请确保将 xuggle-xuggler.jar 文件安装到 $CATALINA_HOME/shared/lib。原因请参见 tomcat JNI notes。


(B) 这仅适用于 Xuggler PRE 5.2
来自:Xuggler 常见问题解答

java.lang.UnsatisfiedLinkError 怎么了?
这意味着 Java 找不到 Xuggler 本机库。检查以下内容:
您是否安装了 Xuggler?
如果没有,请按照此处的说明进行操作

  • 环境变量 XUGGLE_HOME 是否已定义并指向您的 Xuggler 安装目录(通常是 Windows 上的 C:\Program Files\Xuggle 或 Linux/Mac 上的 /usr/local)?
  • 如果您在 Windows 上安装,您安装后是否重新启动?您的 PATH 环境变量是否包括 Windows 上的 %XUGGLE_HOME%\bin 或 Linux/Mac 上的 $XUGGLE_HOME/bin?
  • 您的 PATH 环境变量是否包括 Windows 上的 %XUGGLE_HOME%\lib?
  • 您的 LD_LIBRARY_PATH 环境变量是否包含 Linux 上的 $XUGGLE_HOME/lib?
  • 您的 DYLD_LIBRARY_PATH 环境变量是否包括 Mac OS-X 上的 $XUGGLE_HOME/lib?
  • 您使用的是 32 位 Java JVM,但使用的是 64 位版本的 Xuggler?还是 64 位版本的 Java JVM 但 32 位版本的 Xuggler?不幸的是,这行不通。您需要确保匹配每个版本的“位数”。对不起。如果修复这些问题不能解决问题,请通过支持选项与我们联系。
于 2012-07-13T18:52:47.187 回答
3

问题是我没有重新启动。Mtyson 在他的回答中包含了这一点,所以他是正确的。

于 2014-04-02T21:36:26.287 回答