
$ 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
這是安裝非headless版本的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 版本,但我不知道它是什麼,我確信還有另一篇關於該主題的文章。