gpt4 book ai didi

java - 无法修复 vlcj 加载库 'libvlc'

转载 作者:行者123 更新时间:2023-12-01 23:10:33 25 4
gpt4 key购买 nike

我正在使用 netbeans 来使用 vlcj jar 我的 jdk 是 jdk-7u45-windows-x64 而我的 vlc 是 64b 我通过去图书馆安装了图书馆然后正确单击库文件,然后添加 jar/文件夹,我添加了我从这里下载的文件 file link文件名 vlcj-3.0.0-dist.zip 我解压缩然后通过选择它们添加它 所有测试代码都是这个

    package translater;
import uk.co.caprica.vlcj.binding.LibVlc;
import uk.co.caprica.vlcj.runtime.RuntimeUtil;
import com.sun.jna.Native;


/**
*
* @author isslam
*/
public class Translater {


/**
* @param args the command line arguments
*/
public static void main(String[] args) {
GuiClass is = new GuiClass("AnimeFactor");
is.setVisible(true);

Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class);


}

}

错误信息是这样的

Exception in thread "main" java.lang.UnsatisfiedLinkError: Unable to load library 'libvlc': JNA native support (win32-amd64/libvlc.dll) not found in resource path (C:\Users\isslam\Desktop\vlcj-2.4.1-dist\vlcj-2.4.1\jna-3.5.2.jar;C:\Users\isslam\Desktop\vlcj-2.4.1-dist\vlcj-2.4.1\platform-3.5.2.jar;C:\Users\isslam\Desktop\vlcj-2.4.1-dist\vlcj-2.4.1\vlcj-2.4.1.jar;C:\Users\isslam\Documents\NetBeansProjects\translater\build\classes)
at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:220)
at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:322)
at com.sun.jna.Library$Handler.<init>(Library.java:142)
at com.sun.jna.Native.loadLibrary(Native.java:387)
at com.sun.jna.Native.loadLibrary(Native.java:366)
at translater.Translater.main(Translater.java:27)

最佳答案

vlcj 依赖于 JNA。

因此您需要添加 JNAJNA Platform jar 文件到您的项目。如何执行此操作取决于您自己的项目和您使用的 IDE。最基本的方法是从链接下载 jar 文件 [1][2]并将它们复制到包含 vlcj jar 文件的同一目录。

在 vlcj jar 文件中声明的 list 类路径引用这些 JNA jar - 这意味着您只需要确保将 jar 文件复制到项目中的正确位置,您不必显式添加它们到您的项目类路径。

我的观点是如果使用 Maven 会更简单,但无论如何...

正确安装库后,下一个问题是让 JVM 加载 native 库。

由于多种原因,您可能会收到 UnsatisfiedLinkError,最常见的原因是:

  1. 根本找不到您要加载的共享对象 (DLL);
  2. 您正在尝试混合 CPU 架构,即您的 JVM 是 64 位的,但您的 native 库是 32 位的(反之亦然)。这永远都行不通。

当使用 JNA 加载 native 库时,有多种方法可以设置搜索路径...

这在 [3] 中有解释,但在这里总结一下,最简单的方法是在您的应用程序中添加一些这样的代码:

NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), "the-directory");

此语句告诉 JNA 在特定目录中查找 LibVLC 共享对象(Windows 上的 DLL)。

您将文字字符串“the-directory”替换为磁盘上包含 libvlc.dll 和 libvlccore.dll 文件(或等效的 .so 文件,如果您在 Linux 上)的目录的完整路径。

没有 64 位或 32 位版本的 vlcj - 它只是独立于平台的 Java。

[1]: http://search.maven.org/#artifactdetails%7Cnet.java.dev.jna%7Cjna%7C4.0.0%7Cjar

[2]: http://search.maven.org/#artifactdetails%7Cnet.java.dev.jna%7Cjna-platform%7C4.0.0%7Cjar

[3]:http://www.capricasoftware.co.uk/projects/vlcj/tutorial1.html

如果您使用的是 vlcj 3.0.0 或更高版本,则上述依赖项(以及到工件的链接)是正确的。如果您使用的是 vlcj 的早期版本,例如 2.4.1,那么您需要使用 JNA 和 JNA 平台版本 3.5.2 而不是 4.0.0。

关于java - 无法修复 vlcj 加载库 'libvlc',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21066731/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com