无法修复vlcj加载库'libvlc'

 数到我答应我937 发布于 2023-02-04 13:53

我正在使用netbeans使用vlcj jar我的jdk是jdk-7u45-windows-x64我的vlc是64b我通过去库安装库然后右键单击库文件然后添加jar /文件夹我添加了我下载的文件它从这里文件链接文件名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.(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)

caprica.. 10

vlcj依赖于JNA.

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

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

我认为如果你使用Maven会更简单,但无论如何......

正确安装库之后,下一个问题是让JVM加载本机库.

出于多种原因,您可以获得UnsatisfiedLinkError,最常见的是:

    您尝试加载的共享对象(DLL)无法找到;

    您正在尝试混合CPU架构,即您的JVM是64位,但您的本机库是32位(反之亦然).这永远不会奏效.

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

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

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

该语句告诉JNA查看特定目录以查找LibVLC共享对象(Windows上的DLL).

您将文字字符串"the-directory"替换为磁盘上包含libvlc.dll和libvlccore.dll文件的目录的完整路径(如果您使用的是Linux,则替换为等效的.so文件).

没有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 Platform版本3.5.2而不是4.0.0.

1 个回答
  • vlcj依赖于JNA.

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

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

    我认为如果你使用Maven会更简单,但无论如何......

    正确安装库之后,下一个问题是让JVM加载本机库.

    出于多种原因,您可以获得UnsatisfiedLinkError,最常见的是:

      您尝试加载的共享对象(DLL)无法找到;

      您正在尝试混合CPU架构,即您的JVM是64位,但您的本机库是32位(反之亦然).这永远不会奏效.

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

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

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

    该语句告诉JNA查看特定目录以查找LibVLC共享对象(Windows上的DLL).

    您将文字字符串"the-directory"替换为磁盘上包含libvlc.dll和libvlccore.dll文件的目录的完整路径(如果您使用的是Linux,则替换为等效的.so文件).

    没有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 Platform版本3.5.2而不是4.0.0.

    2023-02-04 13:55 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有