我的系统是Deepin15.8,Java version:1.8.0_181,在编写JavaFX程序出现下述错误,在网上搜索了很久才找到解决方法
不同的机器、系统各有差异,解决方法也各有不同,如果下面的解决方法不好使也不奇怪,因为我也试了很多人的方法不好使
StackOverflow网站上的讨论有不少是比较有意义的,值得一看
Graphics Device initialization failed for : es2, sw
在运行程序的时候加上-Dprism.verbose=true
参数会输出更多信息,如java -Dprism.verbose=true MainApp
,MainApp为主程序
大概会多出下面这条异常
java.lang.UnsatisfiedLinkError: Can't load library: /usr/lib/jdk1.8.0_181/jre/lib/i386/libprism_es2.so
error while loading shared libraries: libgtk-x11-2.0.so.0
原因是缺少32为的库,更多的讨论可以查看 JavaFX on Linux is showing a “Graphics Device initialization failed for : es2, sw”
解决方法
sudo apt-get install libgtk2.0-0:i386
java.lang.IllegalStateException: Location is not set
这种错误一般是fxml文件的路径有问题,我遇到的情况是,将java文件与class文件放在不同的文件夹,即在使用javac
编译是加上-d
指定输出位置,但是javac
并不会自动将fxml文件复制到class文件夹中,程序执行的时候在class文件夹没有找到fxml文件,因此出错
解决方法
将fxml文件复制到class文件夹
无法在模块路径中找到主题引擎:adwaita,pixmap, murrine
(java:11206): Gtk-WARNING **: 10:58:11.285: 无法在模块路径中找到主题引擎:“adwaita”,
(java:11206): Gtk-WARNING **: 10:58:11.285: 无法在模块路径中找到主题引擎:“pixmap”,
(java:11206): Gtk-WARNING **: 10:58:11.289: 无法在模块路径中找到主题引擎:“murrine”
在运行JavaFX程序的时候出现这些提示,缺少相应的主题引擎,程序仍然能正常运行,但是每次都输出这些提示总是不太舒服
解决方法
运行下列命令安装对应32位主题引擎
sudo apt-get install gnome-themes-extra:i386
sudo apt-get install gtk2-engines-pixbuf:i386
sudo apt-get install gtk2-engines-murrine:i386