找不到辅助技术:org.GNOME.Accessibility.AtkWrapper

Gee*_*etT 3 java google-app-engine batik google-cloud-platform

如何解决Google App Engine openJdk中的“找不到辅助技术”错误?

我正在开发一个使用Apache Batik的Web应用程序,它在码头和oracle jdk上在本地运行良好,但是当我将其部署到Google-App-Engine并调用API时,出现以下错误。

Caused by: 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 org.apache.batik.bridge.CursorManager.<clinit>(CursorManager.java:102)
at org.apache.batik.bridge.BridgeContext.<init>(BridgeContext.java:1162)
at org.apache.batik.bridge.BridgeContext.<init>(BridgeContext.java:292)
at org.apache.batik.transcoder.SVGAbstractTranscoder.createBridgeContext(SVGAbstractTranscoder.java:336)
at org.apache.batik.transcoder.SVGAbstractTranscoder.createBridgeContext(SVGAbstractTranscoder.java:312)
Run Code Online (Sandbox Code Playgroud)

我在Google中搜索的人说:“可以通过编辑OpenJDK 8的accessibility.properties文件来完成”

注释掉以下行:

#assistive_technologies=org.GNOME.Accessibility.AtkWrapper
Run Code Online (Sandbox Code Playgroud)

但是我正在使用Google App Engine,并且不确定该怎么做?

任何帮助将不胜感激。

Gee*_*etT 6

我通过动态设置系统属性来解决此问题。

Properties props = System.getProperties();
props.setProperty("javax.accessibility.assistive_technologies", "");
Run Code Online (Sandbox Code Playgroud)


jme*_*ens 5

JDK 9 到 JDK 13 遭受JDK-8216008 -Djavax.accessibility.assistive_technologies 空列表导致异常 的困扰。由于遗留行为,可以使用系统类加载器可见的任何有效类名来代替空字符串。

因此,在所有 JDK 版本上禁用辅助技术的一种方法是指定在构造过程中不执行任何操作的类:

-Djavax.accessibility.assistive_technologies=java.lang.Object

在 JDK9 及更高版本上,Toolkit 尊重 headless 属性,但这在 JDK8 上不起作用。

-Djava.awt.headless=true