首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法修复vlcj加载库“libvlc”

无法修复vlcj加载库“libvlc”
EN

Stack Overflow用户
提问于 2014-01-11 19:17:56
回答 2查看 9.9K关注 0票数 2

我使用netbeans来使用vlcj,我的jdk是jdk-7u45-windows-x64,我的vlc是64b,我安装了库,然后右键单击库文件,然后添加jar /文件夹,然后添加文件,从这里下载它,文件链接文件名vlcj-3.0.0- this,然后通过选择它们添加它,所有的测试代码都是这样的

代码语言:javascript
复制
    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);


    }

}

错误消息是

代码语言:javascript
复制
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)
EN

回答 2

Stack Overflow用户

发布于 2014-01-11 19:52:14

vlcj依赖于JNA。

因此,您需要将南国防军JNA平台 jar文件添加到项目中。如何做到这一点取决于您自己的项目和您正在使用的IDE。最基本的方法是从链接[1][2]下载jar文件,并将它们复制到包含vlcj文件的同一个目录中。

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

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

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

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

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

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

这一点在[3]中已经解释过,但是在这里总结一下,最简单的方法是向应用程序中添加如下代码:

代码语言:javascript
复制
NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), "the-directory");

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

用包含libvlc.dll和libvlccore.dll文件的磁盘上目录的完整路径替换字面字符串“the -目录”(如果您在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平台版本3.5.2,而不是4.0.0。

票数 10
EN

Stack Overflow用户

发布于 2014-01-11 22:16:19

对,但我的问题是jvm,我认为32b,所以我通过在这里下载它的形式来改变它,这个页面有32和64类型。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21066731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档