天天看点

Ubuntu18.0下javafx11+程序无法输入中文的解决方案 前言Failed to load module "canberra-gtk-module"总结

本文转载自:

[客户端开发] Ubuntu18.0下javafx11+程序无法输入中文的解决方案

前言

这个问题一直在出现,一直在发愁该怎么搞。。

网络上面有很多这样的问题,例如:

Ubuntu18.0下javafx11+程序无法输入中文的解决方案 前言Failed to load module "canberra-gtk-module"总结

诸如此类的。。。

我一直纳闷,只看到问题没看到解决方案。。。

然后直到有一个人问为什么没办法输入日文时候,我才发现了一些疑问:

https://stackoverflow.com/questions/58763342/how-to-input-japanese-to-textarea-in-javafx-on-linux

下面是截图:

Ubuntu18.0下javafx11+程序无法输入中文的解决方案 前言Failed to load module "canberra-gtk-module"总结

然后这位兄弟找到了解决方案:

Ubuntu18.0下javafx11+程序无法输入中文的解决方案 前言Failed to load module "canberra-gtk-module"总结

好了,我们追踪下去,可以发现javafx在ubuntu18.04下面是有bug的,看看怎么写:

Ubuntu18.0下javafx11+程序无法输入中文的解决方案 前言Failed to load module "canberra-gtk-module"总结

---原来在ubuntu18.04下面用的gtk版本是2,如果是3的话会有未知错误---说来说去还真的是runtime的锅了。

好了,我们试试在程序上面添加:

  java -Djdk.gtk.version=2 ...
           

试试:

Ubuntu18.0下javafx11+程序无法输入中文的解决方案 前言Failed to load module "canberra-gtk-module"总结

备注:你可能会看到一行红字:

Failed to load module "canberra-gtk-module"

好了,没关系,运行:

sudo apt install libcanberra-gtk-module
           

然后安装成功:

Ubuntu18.0下javafx11+程序无法输入中文的解决方案 前言Failed to load module "canberra-gtk-module"总结

然后,你会看到--分别测试jfoenix文字输入控件以及自带的textfied控件,都能正常输入。

Ubuntu18.0下javafx11+程序无法输入中文的解决方案 前言Failed to load module "canberra-gtk-module"总结
Ubuntu18.0下javafx11+程序无法输入中文的解决方案 前言Failed to load module "canberra-gtk-module"总结

总结

针对ubuntu18.0.4来说,运行程序---打包时候请指定默认的gtk version=2 ---

-Djdk.gtk.version=2
           

继续阅读