辅助技术未找到 AWTError

$ java -jar aprof-plot.jar
Exception in thread "main" java.awt.AWTError: Assistive Technology not found: org.GNOME.Accessibility.AtkWrapper
    at java.awt.Toolkit.loadAssistiveTechnologies(Toolkit.java:807)
    at java.awt.Toolkit.getDefaultToolkit(Toolkit.java:886)
    at java.awt.Toolkit.getEventQueue(Toolkit.java:1734)
    at java.awt.EventQueue.invokeLater(EventQueue.java:1264)
    at aprofplot.Main.newWindow(Main.java:33)
    at aprofplot.Main.main(Main.java:359)

我在这里看到的可能解释是安装Java访问桥。但我无法安装libaccess-java-bridge
7个回答

我在我的Ubuntu 15.10服务器上遇到了同样的错误,但是由于附加依赖项的数量,我不想安装OpenJDK的非无头版本。一个更简单的解决方案是禁用辅助技术。
这可以通过编辑OpenJDK 8的accessibility.properties文件来完成(将版本更改为实际在您的系统上使用的版本):
sudo vim /etc/java-8-openjdk/accessibility.properties

注释掉以下这行代码:
#assistive_technologies=org.GNOME.Accessibility.AtkWrapper

此外,您还可以通过编程方式编辑此行。
sudo sed -i -e '/^assistive_technologies=/s/^/#/' /etc/java-*-openjdk/accessibility.properties

1这是最佳解决方案。对于android-sdk/tools/draw9patch也适用(Android SDK工具)。 - gorlok
这个方法在我的Ubuntu 15.10上也起作用,修复了无法启动的"freemind"。 - rubo77
20今天刚好发生在我身上,这个回答之后已经过去了两年半。现在不是Java 8,而是Java 11,除此之外,对我有帮助,谢谢你。 - marosg
1谢谢,这对我来说很有效,可以启动另一个软件名为OpenRefine。在这里也用了java-11-openjdk。 - Nikhil VJ
工作得很顺利,只是需要做一些调整。这里不是Java-8。 - Alexandre Campos
修复了Slick2D游戏引擎的问题,谢谢! - OldTeaOwl
在Ubuntu 20.10中也是如此;-) - Felix Aballi
虽然我的系统是无头的,但我的应用程序确实会操作图像文件。我不想安装完整的JRE,因为这会导致安装X。我也不想禁用该功能,因为我需要操作图像文件。所以问题是,如果按照您描述的禁用该功能,是否会影响我的应用程序的文件图像功能? - Blake McBride

阅读以下讨论。我通过卸载OpenJDK 8 headless并安装OpenJDK 8成功解决了这个问题。

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=798794

我运行的命令:
sudo dpkg -l | grep openjdk  

这是为了验证您实际上正在运行无界面版本的JAVA,因此没有图形库可用。
sudo apt-get remove openjdk-8-jre-headless

这是为了移除无头版本。
sudo apt-get install openjdk-8-jre

这是安装非无头版本的Java。

这个起了作用 - Illegal Operator
适当解决方案 - Milan Desai

对于那些没有机器的root访问权限来更改配置文件或者不想安装完整的JRE的人来说:在你的命令中添加-Djavax.accessibility.assistive_technologies=" ",例如。
$ java -jar aprof-plot.jar -Djavax.accessibility.assistive_technologies=" "

请注意," "是重要的,仅使用"nothing"作为参数将导致JRE仍然加载在/etc/java-8-openjdk/accessibility.properties中设置的内容。

3追加对我没有解决问题。在前面添加了消息变为辅助技术未找到:,后面没有跟着org.GNOME.Accessibility.AtkWrapper - Fabio Iotti
1这对我在Ubuntu 18.04上的操作有效,当将Java从版本10回退到8时(因为openjfx尚未提供预编译版本)。此问题中列出的其他方法对我无效。 - Chris Good

同样的问题。在我的情况下,我无法运行FastQC。
这是我所做的:
$ sudo apt-get remove openjdk-11-jre-headless

我确认了Java已经消失了。
$ java -version
bash: /usr/bin/java: No such file or directory
$ sudo apt-get install openjdk-8-jre

问题解决了。

我不得不卸载openjdk-11-jre,例如:
sudo apt remove openjdk-11-jre

或者

sudo apt remove openjdk-11*

要在您的系统上删除所有openjdk-11软件包。

这将强制您的程序在openjdk-8-jre上运行,而不是openjdk-11-jre,因为我两者都安装了。显然,Java辅助技术无法在openjdk-11-jre软件包上运行。我相信还有一种指定要运行的Java版本的方法,但我不知道具体的步骤,我确定在其他帖子中会有相关内容。


1您甚至不需要卸载openjdk-11-jdk或openjdk-11-jre:https://askubuntu.com/questions/315646/update-java-alternatives-vs-update-alternatives-config-java - karel

受到Marco的回答启发,但对我来说只有在这个顺序(前置)下才有效。
java -Djavax.accessibility.assistive_technologies=" " -jar aprof-plot.jar

它解决了问题,程序成功启动(在我的情况下是argouml.jar和fakesmtp.jar)。
在Ubuntu 2019.04上使用Java 8。

这种错误发生在您安装了无界面版本的JRE时。无界面JRE是完整JRE的子集,但缺少GUI功能,包括对辅助技术的支持。
安装完整的JRE(例如openjdk11-jre而不是openjdk11-jre-headless),错误应该会消失。无需卸载无界面JRE。