如何为VLCJ添加或安装本机x64库?

时间:2013-01-14 13:49:06

标签: java video windows-7-x64 vlcj

我正在尝试用Java制作一个有视频播放器的信使程序,所以我使用的是vlcj。但是我收到了这个错误:

  

线程“main”中的异常java.lang.UnsatisfiedLinkError:
  无法加载库'libvlc':
  找不到指定的模块。

我已经按照here的教程进行了操作,但我仍然遇到此错误。这是我得到的唯一错误。

我使用x64 VLC在Windows 7 x64 Ultimate上运行。我正在使用最新的Eclipse版本进行编码。

有人可以指导我如何解决这个问题吗?

7 个答案:

答案 0 :(得分:3)

您必须在应用程序中添加“libvlc”和“libvlccore”dll路径。这些将出现在您的vlc安装文件夹中。您可以添加以下代码行以使其正常工作。

NativeLibrary.addSearchPath("libvlc", "C:/VideoLAN/VLC");

此处“C:/ VideoLAN / VLC”是vlc的安装文件夹。

答案 1 :(得分:1)

我看了the vlcj instructions you posted

似乎 vlcj 库正在使用JNA,您可以使用以下命令设置库搜索路径 NativeLibrary 类,如检查程序中所述:

import uk.co.caprica.vlcj.binding.LibVlc;
import uk.co.caprica.vlcj.runtime.RuntimeUtil;

import com.sun.jna.Native;
import com.sun.jna.NativeLibrary;

public class Tutorial1A {
    public static void main(String[] args) {
        String vlcHome = "dir/with/dlls"; // Dir with vlc.dll and vlccore.dll
        NativeLibrary.addSearchPath(
            RuntimeUtil.getLibVlcLibraryName(), vlcHome
        );
        Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class);
    }
}

哟可以尝试运行该代码并检查它是否完成而没有例外。

vlcj 指令还指出JRE的体系结构是相关的;您应该输入以下内容来检查您的JRE架构:

java -version

JRE架构应与VLC架构匹配(也许您可以在“关于”对话框中检查VLC架构)。两者都应该相等(32b或64b)。

但是,奇怪的是,错误消息是指 libvlc 而不是 vlc vlccore 在Windows中执行。

无论如何,如果使用 NativeLibrary 将VLC路径添加到搜索路径不起作用且JRE架构与VLC架构匹配,您可以添加您正在使用的代码以尝试了解更多信息

答案 2 :(得分:1)

这是使用JNA加载vlc库的方法:

NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), "Path to native library");

对于我的程序,我将vlc“libvlc.dll”和“vlccore.dll”放在子文件夹lib/VLC/中,所以我使用{{1}加载相对于我的“program.jar”的文件并将路径添加到结尾:

System.getProperty("user.dir")

如果要从Windows 7中的默认VLC安装路径加载库,可以按如下方式执行:

NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), System.getProperty("user.dir") + "/lib/VLC");

编辑:如果从eclipse中运行此代码,它将无法工作,除非您指定VLC库文件的绝对路径。如果要测试相对路径,请首先构建jar文件并将其放在相对于VLC库文件的正确文件夹中。

答案 3 :(得分:1)

确保使用的是直接的x64或x32环境。这意味着:

  • Windows x64(显然)
  • Java JRE x64(不安装第二个x32 JRE)
  • Java JDK x64
  • VLC x64

现在你应该没事。

答案 4 :(得分:0)

如错误所示,JVM正在尝试加载本机库“libvlc.dll”,但无法找到它。

将dll放在java安装的... / jre / bin目录中,或使用java.library.path属性指向它的位置。

另见How to add native library to "java.library.path" with Eclipse launch (instead of overriding it)

答案 5 :(得分:0)

使用jna.library.path系统属性设置路径。可以在以下位置找到此技术的工作示例:

https://github.com/johndeverall/BehaviourCoder/blob/master/src/main/java/de/bochumuniruhr/psy/bio/behaviourcoder/Main.java

public static void main(String[] args)方法中。

此代码可能会很快更新,这将破坏上述链接,但您始终可以使用版本控制返回我发布的日期并查看代码。

答案 6 :(得分:0)

cd src/main/resources/
cp -r /Applications/VLC.app/Contents/MacOS/lib darwin
rm darwin/*.*.*
cd darwin
install_name_tool -add_rpath @loader_path libvlc.dylib
mkdir vlc
cp -r /Applications/VLC.app/Contents/MacOS/plugins vlc/plugins

这是macOS版本。也许可以帮助您。

├── kotlin
│   └── App.kt
└── resources
    └── darwin
        ├── libvlc.dylib
        ├── libvlccore.dylib
        └── vlc
            └── plugins
                ├── liba52_plugin.dylib
                ├── libaccess_concat_plugin.dylib
                ├── libaccess_imem_plugin.dylib
                ├── libaccess_mms_plugin.dylib