线程“主”java.awt.AWTError 中的异常:未找到辅助技术

Posted

技术标签:

【中文标题】线程“主”java.awt.AWTError 中的异常:未找到辅助技术【英文标题】:Exception in thread "main" java.awt.AWTError: Assistive Technology not found 【发布时间】:2013-03-07 00:36:59 【问题描述】:

如何解决这个错误?

: com.sun.java.accessibility.AccessBridge 在 java.awt.Toolkit.loadAssistiveTechnologies(Toolkit.java:775) 在 java.awt.Toolkit.getDefaultToolkit(Toolkit.java:861) 在 java.awt.Window.getToolkit(Window.java:1127) 在 java.awt.Window.init(Window.java:369) 在 java.awt.Window.(Window.java:407) 在 java.awt.Frame.(Frame.java:402) 在 java.awt.Frame.(Frame.java:367) 在 javax.swing.JFrame.(JFrame.java:163) 在 FirstJavaProject.(FirstJavaProject.java:7) 在 FirstJavaProject.main(FirstJavaProject.java:5)

在执行以下程序时发生:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class TenButtons extends JFrame

    JButton [] btns= new JButton[10];

    public static void main(String args[])
        new TenButtons();
    
    public TenButtons()
        this.setSize(500,500);
        this.setTitle("10 Buttons");
        this.setLayout(new GridLayout(5,2));
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        for(int i=0; i<btns.length; i++)
           btns[i]=new JButton("Button ");
           this.add(btns[i]);
        
        this.setVisible(true);
    

我的JDK_HOME/jre/lib/accessibility.properties 文件有以下内容:

## Load the Java Access Bridge class into the JVM ##
assistive_technologies=com.sun.java.accessibility.AccessBridge
#screen_magnifier_present=true

【问题讨论】:

accessibility.properties 在 jre/lib 文件夹中可用 谢谢。我找到了这个,为我工作:) askubuntu.com/questions/695560/… 我找到了这个解决方案,为我工作:) askubuntu.com/questions/695560/… 【参考方案1】:

供将来参考,此异常的更常见原因之一是Java Access Bridge 的安装丢失或损坏。在这种情况下,标准配置文件(JDK_HOME/jre/lib/accessibility.properties)中定义了以下访问桥:

com.sun.java.accessibility.AccessBridge

但除非完成所需的安装,否则它实际上不会起作用。请注意,标准的访问桥实现随 SDK 一起提供。要解决您的特定问题,请按照他们的setup page 中的说明下载并安装 Oracle Access Bridge。这应该可以解决您的程序中发生的启动错误。

【讨论】:

对于 Windows 用户,可以在 users 文件夹中找到设置文件:C:\Users\current_user\.accessibility.properties 所以找到它并删除或注释该文件中的每一行 #【参考方案2】:

回答那些:

正在使用 Windows WSL2 并已安装 OpenJDK 8 已尝试启动 Gremlin 控制台或类似的 Java 应用程序

并收到同样的错误Assistive technology not found AWTError之前批准的答案都是正确的。

对于 WSL2 和 OpenJDK 8,您需要执行以下操作:

sudo vim /etc/java-8-openjdk/accessibility.properties

如下注释掉配置行:

#assistive_technologies=org.GNOME.Accessibility.AtkWrapper

无需重启 WSL 会话。只需重新启动 Java 应用程序。

【讨论】:

【参考方案3】:

使用 Java 11,您可能正在使用 Java 8,并且它没有 Assistive Technologyorg。 GNOME.Accessibility.AtkWrapper.

另外,不要从辅助功能属性文件中注释掉辅助技术行,这不会解决您的问题,而是会错误配置您的布局,并且您会留下丑陋或无法使用的 UI。

【讨论】:

以上是关于线程“主”java.awt.AWTError 中的异常:未找到辅助技术的主要内容,如果未能解决你的问题,请参考以下文章

需要帮助启动 DSE Graph

Exception in thread “main“ java.awt.AWTError: Assistive Technology not found: org.GNOME.Accessibilit

分配布局时出错:无法共享 BoxLayout

引用 C# 中的主线程

怎样将子线程中的参数传到主线程

从主线程触发一个线程中的动作的防弹方法?