Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何为VLCJ添加或安装本机x64库?_Java_Video_Windows 7 X64_Vlcj - Fatal编程技术网

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

Java 如何为VLCJ添加或安装本机x64库?,java,video,windows-7-x64,vlcj,Java,Video,Windows 7 X64,Vlcj,我正在尝试用Java编写一个messenger程序,其中有一个视频播放器,所以我使用vlcj。但我收到了这个错误: 线程“main”java.lang.UnsatifiedLinkError中出现异常: 无法加载库“libvlc”: 找不到指定的模块 我已经遵循了的教程,但我仍然得到这个错误。这是我唯一的错误 我在Windows7x64Ultimate上运行,带有x64VLC。我正在使用最新的Eclipse版本进行编码 有谁能指导我一步一步地解决这个问题吗?正如错误所示,JVM正在尝试加载本机库

我正在尝试用Java编写一个messenger程序,其中有一个视频播放器,所以我使用vlcj。但我收到了这个错误:

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

我已经遵循了的教程,但我仍然得到这个错误。这是我唯一的错误

我在Windows7x64Ultimate上运行,带有x64VLC。我正在使用最新的Eclipse版本进行编码


有谁能指导我一步一步地解决这个问题吗?

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

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

另请参见我读到的

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架构相匹配(也许您可以在About对话框中检查VLC架构)。两者应相等(32b或64b)

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


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

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

NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), "Path to native library");
对于我的程序,vlc“libvlc.dll”和“vlccore.dll”位于子文件夹
lib/vlc/
中,因此我使用
System.getProperty(“user.dir”)
加载与“program.jar”相关的文件,并将路径添加到末尾:

NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), System.getProperty("user.dir") + "/lib/VLC");
如果要从windows 7中的默认VLC安装路径加载库,可以按如下操作:

NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), "C:/Program Files (x86)/VideoLAN/VLC");
编辑:如果您在eclipse中运行此代码,它将不起作用,除非您指定VLC库文件的绝对路径。如果要测试相对路径,请首先构建jar文件,并将其放置在相对于VLC库文件的正确文件夹中。

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

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

这里的“C:/VideoLAN/VLC”是VLC的安装文件夹。

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

publicstaticvoidmain(String[]args)
方法中


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

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

  • Windows x64(显然)
  • Java JRE x64(不要安装第二个x32 JRE)
  • Java JDK x64
  • VLC x64
现在你应该没事了

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

我将dll放在jre/bin中,但仍然无法工作。如何使用java.library.path属性?我的JRE和VLC都是64b,因此不会引发问题,而且我还使用了NativeLibrary搜索,但仍然出现了该错误。我尝试了网页上的所有内容,但仍然出现了相同的错误。此外,VLC文件夹中的.dll文件名为.dll.a,因此当我将它们放在jre/bin中时,我将它们更改为.dll,但仍然存在相同的错误。我应该在VLC文件夹中将它们也更改为.dll吗?您的VLC安装应该在某个文件夹中有
libvlc.dll
libvlccore.dll
。.a扩展看起来像一个Linux二进制文件。如果您拥有的文件是:
libvlc.dll.a
,则可能您没有指向正确的VLC文件夹,或者您的SO没有使用VLC程序。VLC 2.0.5 for Windows在程序文件夹中有一个文件
libvlc.dll
(没有
.a
),请按照此链接中的步骤[playing media file mp4 file][1][1]:
java.lang.RuntimeException:无法获取新的本机库实例