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