- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在设计这个 Java 网络小程序,以通过来自视频服务器的 RTSP 流式传输视频。为了呈现此视频,将使用 Xuggler 5.4 库 (xuggle-xuggler.jar
)。目前,当我在 Windows XP 和 Ubuntu 10.04 机器上运行视频时,它可以正确呈现。但是,当我尝试在 Windows 7 上运行它时,出现以下错误:
10:10:13.370 [Thread-13] WARN com.xuggle.ferry.JNILibrary - Failure: library load of library: xuggle; url: C:\Users\Justin\AppData\Local\Temp\xuggle\xuggle8376027568348573783.dll; error: java.lang.UnsatisfiedLinkError: C:\Users\Justin\AppData\Local\Temp\xuggle\xuggle8376027568348573783.dll: Can't find dependent libraries
10:10:13.448 [Thread-13] ERROR com.xuggle.ferry.JNILibraryLoader - Could not load library: xuggle; version: 5; Visit http://www.xuggle.com/xuggler/faq/ to find common solutions to this problem
Exception in thread "Thread-13" java.lang.UnsatisfiedLinkError: no xuggle in java.library.path
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at com.xuggle.ferry.JNILibraryLoader.loadLibrary0(JNILibraryLoader.java:268)
at com.xuggle.ferry.JNILibraryLoader.loadLibrary(JNILibraryLoader.java:171)
at com.xuggle.ferry.JNILibrary.load(JNILibrary.java:161)
at com.xuggle.ferry.FerryJNI.<clinit>(FerryJNI.java:16)
at com.xuggle.ferry.Ferry.<clinit>(Ferry.java:25)
at com.xuggle.xuggler.XugglerJNI.<clinit>(XugglerJNI.java:19)
at com.xuggle.xuggler.ICodec$ID.<clinit>(ICodec.java:760)
at com.ioindustries.videoserver.RtpSession.run(RtpSession.java:86)
at java.lang.Thread.run(Unknown Source)
我已经尝试提取 xuggle-5.dll
并将其放在我的 web
目录中,然后将其链接到 Windows %PATH% 甚至 Windows %CLASSPATH% ,但是当我这样做时视频仍然不呈现并且错误消失(此时,我不确定发生了什么)。我还尝试通过依赖项 walker 运行 xuggle-5.dll,尽管我得到的只是 IESHIM.dll 的错误,如下面的屏幕截图所示:
当然,当我在 Windows XP 和 Ubuntu 10.04 机器上运行 IESHIM.dll 时,也会出现同样的错误。
我还在用于启动 Web 小程序的 HTML 文档下引用了 xuggle-xuggler.jar 文件。
此时,我真的不确定为什么 Xuggler 无法在我用于开发的 Windows 7(32 位)机器上运行。对此事的任何帮助将不胜感激。
请注意,我正在尝试使用 Xuggle 网站上提供的 GPL 版本的 Xuggle 5.4(与以前版本的 Xuggle 不同,它不需要任何安装)运行。
这是我的 HTML 文档的片段:
<div id="applet_box" class="applet box">
<applet id="applet" code="com.videoserver.ClientApplet"
archive="VideoServerClient.jar, xuggle-xuggler-5.4.jar, slf4j-api-1.6.4.jar, logback-classic-1.0.0.jar, logback-core-1.0.0.jar" MAYSCRIPT>
</applet>
</div>
最佳答案
我的同事弄清楚了为什么会出现此 java.lang.UnsatisfiedLinkError
,所以所有的功劳都归于他(我只是一个观察者)。
引用上面错误日志的第一行:
10:10:13.370 [Thread-13] WARN com.xuggle.ferry.JNILibrary - Failure: library load of library: xuggle; url: C:\Users\Justin\AppData\Local\Temp\xuggle\xuggle8376027568348573783.dll; error: java.lang.UnsatisfiedLinkError: C:\Users\Justin\AppData\Local\Temp\xuggle\xuggle8376027568348573783.dll: Can't find dependent libraries
基本上,在我的案例中发生的事情是 Java 运行时环境有一个 Xuggle DLL 文件的缓存副本,它可能来自两个月前我用来试验 Java applet 视频输出的旧 Xuggle JAR 存档。鉴于临时目录中引用的 DLL 文件 (C:\Users\Justin\AppData\Local\Temp\xuggle\xuggle8376027568348573783.dll
) 具有不同的依赖关系,我们能够得出这个结论与通过上面的 Dependency Walker 应用程序验证时从最新的 xuggle-xuggler-5.4.jar
中提取的最新 xuggle DLL 文件相比。
因此,当我尝试在我的 Java Web Applet 中显示视频时,Java 运行时环境会尝试访问这个陈旧的 Xuggle DLL 文件,而不是从 xuggle-xuggler-5.4.jar 中加载 DLL 文件
。因此,发生了上述java.lang.UnsatisfiedLinkError
。
为了强制 Java 运行时环境从 xuggle-xuggler-5.4.jar
中的 DLL 文件中加载 DLL 文件,执行了以下步骤:
打开 Java 控制面板。在 Windows 中,这是通过转到“开始”菜单并访问“控制面板”来完成的。如果安装了 Java Runtime Environment,Java 应该作为一个选项出现在 Windows 控制面板中。单击 Java。
进入 Java 控制面板后,在“常规”选项卡下的“Internet 临时文件”下,单击“设置...”按钮。
取消选中“在我的计算机上保留临时文件”复选框。
然后单击“删除文件”按钮并删除所有临时文件(选中所有复选框)。根据您的偏好,您可能只想选择这些复选框的一个子集,尽管我已将它们全部选中。
点击确定。然后再次单击“确定”。然后第三次单击确定以关闭 Java 控制面板。
如果您的 Web 浏览器处于打开状态,请将其关闭并尝试重新启动您的 Java Web Applet。如果这是您遇到的问题,那么 java.lang.UnsatisfiedLinkError
应该不会再出现并且视频应该可以正确显示,前提是您的代码是正确的并且您有正确的 Xuggle JAR,以及Xuggle 的依赖项,已加载。在我的例子中,我的 Web 小程序 JAR 与用于将它嵌入 Web 浏览器的 HTML 文件以及所有必需的 Xuggle JAR 和 Xuggle 依赖项 JAR 简单地放在同一目录中。
需要注意的是,Ubuntu 中的 Java Runtime Environment 也有 Java 控制面板,看起来和 Windows 中的类似,如果出现问题,可以在 Ubuntu 中执行类似的步骤来解决这个问题。
如果您只是直接在 Web 浏览器中打开 HTML 文件,则上述解决方案应该有效。如果您使用 Apache Tomcat 或 Glassfish 来部署您的 Web 小程序,这可能行不通 - 在这种情况下,您可能需要引用此解决方案,尽管我自己还没有对其进行彻底测试:
关于java - 无法加载 Xuggle 库 : java. lang.UnsatisfiedLinkError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14984295/
在 Tomcat 6/Ubuntu 12.04 上启动 Grails 2.1.0 应用程序时出现以下错误。 Error 500 - Internal Server Error. groovy.lang
在运行 Storm 拓扑时,我收到此错误。拓扑完美运行 5 分钟,没有任何错误,然后失败。我正在使用 Config.TOPOLOGY_TICK_TUPLE_FREQ_SECS as 300 sec i
我有一个 jsp 代码在其中一台机器上运行良好。但是当我复制到另一台机器时,我得到了这个 no such method found 异常。我是 Spring 的新手。有人可以解释我错过了什么吗? 以下
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我的代码在下面给出了一个错误; Exception in thread "main" java.lang.NoSuchMethodError: com/myApp/Client.cypherCBC(L
我正在尝试一个 Restful web 服务示例,所以当我要访问 url 时,我遇到了异常 java.lang.NoSuchMethodError: jersey.repackaged.com.goo
我正在将一个 Spring web 项目转换为一个 Maven 项目,但我收到了这个错误: java.lang.NoSuchMethodError: org.jboss.logging.Logger.
在我的项目中,我有一个像这样的枚举: public enum MyEnum { FIRST(1), SECOND(2); private int value; private MyEnum(int v
我创建了这个简单的示例,用于读取 Linux 正常运行时间: public String getMachineUptime() throws IOException { String[] di
我正在使用 Eclipse,并且正在使用 Java。我的目标是使用 bogoSort 方法对 vector 进行排序在一个 vector (vectorExample)中适应我的 vector 类型,
我正在运行以下查询。它显示一条错误消息。如何解决这个错误? ListrouteList=null; List companyList = session.createS
我有以下模型类: @Entity @Table(name="user_content") @org.hibernate.annotations.NamedQueries({ @org.
我有那个错误。这是我的代码: GmailSettingsService service = new GmailSettingsService(APPLICATION_NAME, DOMAIN_NAME
实际上我在执行我的java程序时遇到了下面提到的错误 Exception in thread "pool-1-thread-1" java.lang.ClassCastException: jav
java.lang.ClassCastException: java.lang.Float cannot be cast to java.lang.String 我在以下代码中遇到此异常: Strin
我正在尝试从 linkedhashset 中检索随机元素。下面是我的代码,但它每次都给我异常。 private static void generateRandomUserId(Set userIds
我已经完成了 Android 中的代码: List spinnerArray = new ArrayList(); for (int i = 0; i item = (LinkedTreeMap)
这个问题已经有答案了: Explanation of ClassCastException in Java (12 个回答) 已关闭 6 年前。 我已经编写了 java 到 Json 的代码,同时从页
这个问题在这里已经有了答案: ClassCastException java.lang.Long cannot be cast to clojure.lang.IFn (4 个答案) 关闭 6 年前
我在运行时遇到问题来编译这段代码,这给我一个错误,java.lang.Integer 无法转换为 Java.lang.Double。如果有人帮助我更正此代码,我将非常高兴 double x; pu
我是一名优秀的程序员,十分优秀!