$ 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 版本,但我不知道,而且我确信还有另一篇关于该主题的帖子。