未找到辅助技术 AWTError

未找到辅助技术 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-access-bridge。但我无法安装libaccess-java-bridge

答案1

我在 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

答案2

阅读以下帖子。我通过卸载 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。

答案3

对于那些没有 root 权限来更改配置文件或不想安装完整 JRE 的用户:将其附加-Djavax.accessibility.assistive_technologies=" "到命令中,例如

$ java -jar aprof-plot.jar -Djavax.accessibility.assistive_technologies=" "

请注意,很" "重要,只需使用“nothing”作为参数就会导致 JRE 仍然加载中设置的任何内容/etc/java-8-openjdk/accessibility.properties

答案4

我必须卸载 openjdk-11-jre,例如:

sudo apt remove openjdk-11-jre

或者

sudo apt remove openjdk-11*

删除系统上的所有 openjdk-11 包。

这会强制您的程序在 openjdk-8-jre 而不是 openjdk-11-jre 上运行,因为我安装了这两个。显然,Java Assistive Technology 不能在 openjdk-11-jre 包上运行。我相信还有一种方法可以指定要运行哪个 Java 版本,但我不知道,而且我确信还有另一篇关于该主题的帖子。

相关内容