我的 java 程序为某些 AWT 类抛出 java.lang.ClassNotFoundException 我该怎么办?

问题描述

当我运行 Java 调试器时,我发现了这个“java.lang.classNotFoundException: sun/awt/resources/spi/awtProvider”和“java.io.FileNotFoundException: C:\Program Files\AdoptOpenJDK\jdk-11.0. 6.10-hotspot\conf\accessibility.properties(系统找不到指定的文件)”我想我知道为什么,我的数据存储空间不足,所以我将程序移到了不同​​的驱动器,这就是为什么它找不到 java API类?我该如何解决这个问题?

解决方法

您无需修复此问题。

  • sun.awt.resources.spi.awtProvider 是作为可能的资源包提供者自动生成的类名。如果未找到该类,它将被忽略。

请参阅 https://github.com/openjdk/jdk11u/blob/master/src/java.desktop/share/classes/java/awt/Toolkit.java#L1416 的来源:

            try {
                resources = ResourceBundle.getBundle("sun.awt.resources.awt");
            } catch (MissingResourceException e) {
                // No resource file; defaults will be used.
            }
  • accessibility.properties 是一个可选文件,可用于配置辅助技术。如果找不到此文件,则不会发生任何变化。

根据 https://github.com/openjdk/jdk11u/blob/master/src/java.desktop/share/classes/java/awt/Toolkit.java#L423 的消息来源:

                try {
                    File propsFile = new File(
                        System.getProperty("java.home") + sep + "conf" +
                        sep + "accessibility.properties");
                    FileInputStream in =
                        new FileInputStream(propsFile);

                    // Inputstream has been buffered in Properties class
                    properties.load(in);
                    in.close();
                } catch (Exception e) {
                    // System-wide accessibility properties file does
                    // not exist;
                }