Java ClassNotFoundException - Java.lang.ClassNotFoundException

Java ClassNotFound例外

  • Java ClassNotFoundException发生时,应用程序试图加载类,但ClassLoader(/community/tutorials/java-classloader)无法在类路径中找到它
  • ClassNotFoundException的常见原因是使用Class.lang.ClassNotFoundException(/community/tutorials/exception-handling-in-java)来加载类,所以它必须通过传递类的字符串名来加载类 并且它不能在类路径上找到
  • ClassNotFoundException是一个被检查的例外(/community/tutorials/exception-handling-in-java),所以它必须被捕获或扔到呼叫器(

Java ClassNotFound例外

让我们看看一个简单的例子,我们会得到ClassNotFoundException

 1package com.journaldev.exceptions;
 2
 3public class DataTest {
 4
 5  public static void main(String[] args) {
 6    try {
 7      Class.forName("com.journaldev.MyInvisibleClass");
 8
 9      ClassLoader.getSystemClassLoader().loadClass("com.journaldev.MyInvisibleClass");
10
11      ClassLoader.getPlatformClassLoader().loadClass("com.journaldev.MyInvisibleClass");
12    } catch (ClassNotFoundException e) {
13      e.printStackTrace();
14    }
15  }
16
17}

请注意,com.journaldev.MyInvisibleClass不存在,所以当我们执行上面的程序时,我们会得到以下的例外堆栈跟踪。

1java.lang.ClassNotFoundException: com.journaldev.MyInvisibleClass
2    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
3    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:185)
4    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)
5    at java.base/java.lang.Class.forName0(Native Method)
6    at java.base/java.lang.Class.forName(Class.java:292)
7    at com.journaldev.exceptions.DataTest.main(DataTest.java:7)

在上面的示例中,所有三个陈述都将投放java.lang.ClassNotFoundException

如何解决 ClassNotFoundException

修复 ClassNotFoundException 非常容易,因为例外堆栈跟踪清楚地指定了未找到的类,只需检查类路径设置并确保在运行时存在类。

对不起 对不起 对不起 对不起

NoClassDefFoundError是当一个类别在运行时无法找到时丢失的运行时错误。 它与ClassNotFoundException非常相似。 阅读更多在 Java NoClassDefFoundError。 参考: API Doc

Published At
Categories with 技术
Tagged with
comments powered by Disqus