我刚刚进行了一次小升级,然后突然开始遇到 Java 问题。
堆栈跟踪如下所示:
java.awt.AWTError:未找到辅助技术:org.GNOME.Accessibility.AtkWrapper 在 java.desktop/java.awt.Toolkit.newAWTError(Toolkit.java:472) 在 java.desktop/java.awt.Toolkit.fallbackToLoadClassForAT(Toolkit.java:488) 在 java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183) 在 java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177) 在 java.base/java.util.HashMap$KeySpliterator.forEachRemaining(HashMap.java:1608) 在 java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) 在 java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) 在 java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150) 在 java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173) 在 java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) 在 java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497) 在 java.desktop/java.awt.Toolkit.loadAssistiveTechnologies(Toolkit.java:532) 在 java.desktop/java.awt.Toolkit.getDefaultToolkit(Toolkit.java:613) 在 java.desktop/java.awt.Window.getToolkit(Window.java:1375) 在 java.desktop/java.awt.Window.init(Window.java:518) 位于 java.desktop/java.awt.Window。(Window.java:549) 位于 java.desktop/java.awt.Frame。(Frame.java:423) 位于 java.desktop/java.awt.Frame。(Frame.java:388) 位于 java.desktop/javax.swing.JFrame。(JFrame.java:180) 在 rga.hack.SlideShow.(SlideShow.java:293) 在 rga.hack.SlideShow.main(SlideShow.java:674) 原因:java.lang.ClassNotFoundException:org.GNOME.Accessibility.AtkWrapper 在 java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582) 位于 java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:190) 在 java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499) 在 java.base/java.lang.Class.forName0(本机方法) 在 java.base/java.lang.Class.forName(Class.java:374) 在 java.desktop/java.awt.Toolkit.fallbackToLoadClassForAT(Toolkit.java:485) ... 另外 19 个
我安装了 openjdk-11-jre 和 openjdk-11-jre-headless 以及 libatk-wrapper-java 和 libatk-wrapper-java-jni。
我使用的 Java 代码是我自己编写的旧程序,但直到上次更新之前它一直运行良好。
我可以通过注释掉 /etc/java-11-openjdk/accessibility.properites 中的行来解决这个问题,但我怀疑我最近安装的某个软件包中存在一个破坏的依赖关系。
更新中安装了以下软件包:
升级了以下软件包: accountsservice (0.6.45-1ubuntu1) 至 0.6.45-1ubuntu1pop2 控制台设置(1.178ubuntu2.3)升级至 1.178ubuntu2.6 console-setup-linux (1.178ubuntu2.3) 升级至 1.178ubuntu2.6 gir1.2-accountsservice-1.0 (0.6.45-1ubuntu1) 至 0.6.45-1ubuntu1pop2 gnome-initial-setup(3.28.0-2ubuntu6.16.04.1)至 3.28.0-2ubuntu6.16.04.2system76.1 键盘配置(1.178ubuntu2.3)升级至 1.178ubuntu2.6 libaccountsservice0 (0.6.45-1ubuntu1) 至 0.6.45-1ubuntu1pop2 palemoon(27.9.4~binaryrepack-1)至 28.0.0~repack-3
由于该错误与 gnome 有关,我将其归咎于 gnome-initial-setup 包,但我想知道是否有人比我更了解这一点。
答案1
openjdk atk 包装器有一个已知错误,因此它实际上不是 gnome 问题。openjdk 错误表明它是在 openjdk9 中引入的,但谷歌搜索显示它早在 openjdk8 中就存在。该错误已关闭,并进行了外部分类,需要将 ATK 重新设计为服务。
解决方法是,要么注释掉辅助功能属性文件中的辅助技术行(如您所述),要么将包装器添加到类路径中
export CLASSPATH=/usr/share/java/java-atk-wrapper.jar
openjdk 错误参考是https://bugs.openjdk.java.net/browse/JDK-8204862