【问题标题】:VLCJ fullScreen Error Unable to load library 'X11': JNA native support (win32-x86/X11.dll)VLCJ 全屏错误无法加载库“X11”:JNA 本机支持(win32-x86/X11.dll)
【发布时间】:2014-10-31 17:52:01
【问题描述】:

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

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

线程“JavaFX 应用程序线程”中的异常 java.lang.UnsatisfiedLinkError:无法加载库“X11”:JNA 在资源路径中找不到本机支持(win32-x86/X11.dll)

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

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

【问题讨论】:

    标签: java media-player vlcj


    【解决方案1】:

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

    那是行不通的。

    vlcj 使用 Linux 上的 X11 本机库将 Java JFrame 切换到全屏。

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

    因此,在 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 架构必须与您尝试加载的共享库的架构相匹配。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-15
      • 2019-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-29
      • 2014-06-09
      • 1970-01-01
      相关资源
      最近更新 更多