它看起来像你正试图加载Windows中的X11库。
这是行不通的。
vlcj使用Linux上的X11本机库将Java JFrame切换为全屏。
在Windows上,vlcj使用Win32 API提供了不同的本机解决方案。如果你想支持
mediaPlayerComponent = new EmbeddedMediaPlayerComponent() {
@Override
protected FullScreenStrategy onGetFullScreenStrategy() {
return new XFullScreenStrategy(frame);
}
};
当然:
mediaPlayerComponent = new EmbeddedMediaPlayerComponent() {
@Override
protected FullScreenStrategy onGetFullScreenStrategy() {
return new Win32FullScreenStrategy(frame);
}
};
在Linux上,你会使用这样的:
所以在Windows上,你可以在您创建的媒体播放器做这样的事情或者,您可以在运行时进行有条件检查,例如:
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体系结构必须与你试图加载的共享库的体系结构相匹配。