gpt4 book ai didi

java - VLCJ 全屏错误无法加载库 'X11' : JNA native support (win32-x86/X11. dll)

转载 作者:太空宇宙 更新时间:2023-11-04 06:26:53 25 4
gpt4 key购买 nike

我正在做一个基于 Java 的媒体播放器,但在全屏显示视频时遇到问题。

当我使用 components.getMediaPlayer().setFullScreen(true); 时,出现以下错误:

Exception in thread "JavaFX Application Thread" java.lang.UnsatisfiedLinkError: Unable to load library 'X11': JNA native support (win32-x86/X11.dll) not found in resource path

我使用 JVM 32 位、JNA 3.5.2 和 VLCJ 3.0.1。

据我所知正在加载 32 位库,但我的操作系统是 64 位。这是问题吗?

最佳答案

您似乎正在尝试在 Windows 中加载 X11 库。

那是行不通的。

vlcj 使用 Linux 上的 X11 native 库将 Java JFrame 切换为全屏。

在 Windows 上,vlcj 使用 Win32 API 提供不同的 native 解决方案。

因此,在 Windows 上,您可以在创建媒体播放器时执行以下操作:

    mediaPlayerComponent = new EmbeddedMediaPlayerComponent() {
@Override
protected FullScreenStrategy onGetFullScreenStrategy() {
return new Win32FullScreenStrategy(frame);
}
};

在 Linux 上你会使用这样的东西:

    mediaPlayerComponent = new EmbeddedMediaPlayerComponent() {
@Override
protected FullScreenStrategy onGetFullScreenStrategy() {
return new XFullScreenStrategy(frame);
}
};

当然,如果你想支持任一/或,你可以在运行时进行条件检查,例如:

    mediaPlayerComponent = new EmbeddedMediaPlayerComponent() {
@Override
protected FullScreenStrategy onGetFullScreenStrategy() {
if (RuntimeUtil.isWindows()) {
return new Win32FullScreenStrategy(frame);
}
else {
return new XFullScreenStrategy(frame);
}
}
};

为什么要以这种方式实现全屏功能?

这是因为使用核心 Java 的全屏功能并不可靠 - 例如,在某些 Windows 版本上,除了任务栏之外,它可能是全屏的,而在某些 Linux 窗口管理器上,它可能根本不起作用。

回答关于 32 位 DLL 与 64 位操作系统的问题:这里重要的是您的 JVM 架构是否是 32 位,即 JVM 架构必须与您尝试加载的共享库的架构相匹配。

关于java - VLCJ 全屏错误无法加载库 'X11' : JNA native support (win32-x86/X11. dll),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26680672/

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