如何解决Google中的“辅助技术未发现”错误?
我正在开发一个使用Apache的web应用程序,它在本地使用jetty和oracle jdk很好,但是当我将它部署到Google并调用我的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)我在谷歌搜索,人们说:“这可以通过编辑accessibility.properties文件为OpenJDK 8”。
注释掉以下一行:
#assistive_technologies=org.GNOME.Accessibility.AtkWrapper但我正在使用谷歌应用程序引擎,我不知道我如何做到这一点?
任何帮助都将不胜感激。
发布于 2018-11-04 17:34:16
我通过动态设置系统属性来解决这个问题。
Properties props = System.getProperties();
props.setProperty("javax.accessibility.assistive_technologies", "");发布于 2019-12-18 17:59:07
JDK 9通过JDK 13受到技术空列表导致异常的影响。由于遗留行为,系统类加载程序可以使用任何对系统类加载器可见的有效类名,而不是空字符串。
因此,在所有JDK版本上禁用辅助技术的一种方法是指定在构造过程中什么都不做的类:
-Djavax.accessibility.assistive_technologies=java.lang.Object
在JDK9和稍后版本中,Toolkit尊重无头属性,但这在JDK8上不起作用。
-Djava.awt.headless=true
发布于 2019-06-11 06:21:33
我也面临着同样的问题。
我的解决方案:
使用自定义码头图像。
在app.yaml中使用运行时自定义
runtime: custom在src/main/docker/Dockerfile添加新文件“Dockerfile”
FROM gcr.io/google-appengine/jetty
ADD you_war_fle_name_inside_target_dir $JETTY_BASE/webapps/root.war
WORKDIR $JETTY_BASE
RUN sed -i -e '/^assistive_technologies=/s/^/#/' /etc/java-*-openjdk/accessibility.properties
RUN java -jar $JETTY_HOME/start.jar --approve-all-licenses --create-startd --add-to-start=jmx,stats,hawtio && chown -R jetty:jetty $JETTY_BASE然后从云控制台运行以下命令。
mvn package -DskipTests appengine:deployhttps://stackoverflow.com/questions/53137802
复制相似问题