未找到輔助科技 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

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

相關內容