首页 > 解决方案 > 我的 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 类的原因吗?我该如何解决?

标签: javafilesystems

解决方案


你不需要解决这个问题。

  • 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;
                }

推荐阅读