首页 > Java > java教程 > 正文

为什么在Java中,当类存在时我们会得到ClassNotFoundException的异常?

王林
发布: 2023-09-11 18:21:04
转载
1363人浏览过

为什么在java中,当类存在时我们会得到classnotfoundexception的异常?

每当我们尝试加载一个类时,如果类加载器无法在指定路径找到该类,则会生成 ClassNotFoundException

这可能在执行时发生java 程序,使用名为 Class 的类的 forName() 方法或 ClassLoader 类的 loadClass() 方法显式加载类。这两个类接受表示类名的字符串值并加载指定的类。

将类名传递给这些方法时,您需要确保 -

    传递给这些方法的类名应该准确。

    立即学习Java免费学习笔记(深入)”;

  • 指定的类(连同包)应该位于当前目录或其path 应在环境变量 classpath 中列出。

示例

假设我们创建了一个名为 Sample 在目录 D:// 中并按如下所示进行编译 -

package myPackage.example;
public class Sample {
   static {
      System.out.println("The class named Sample loaded successfully.........");
   }
}
登录后复制

编译

D:\>javac -d . Sample.java
登录后复制

这将在当前目录 myPackage.example 中创建一个包,并在其中生成 Sample 类的 .class 文件。因此,在加载此类时,您需要将其放在同一目录中,并将绝对类名传递给 Class.forName()loadClass() p>

示例

 实时演示

public class ClassNotFoundExample {
   public static void main(String args[]) {
      try {
         Class.forName("myPackage.exampl.Sample");
      }catch (ClassNotFoundException ex) {
         ex.printStackTrace();
      }
   }
}
登录后复制

异常

在执行上述程序时,由于包的名称拼写错误,您将得到以下异常。

D:\>java ClassNotFoundExample
java.lang.ClassNotFoundException: myPackage.exampl.Sample
   at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source)
   at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source)
   at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
   at java.base/java.lang.Class.forName0(Native Method)
   at java.base/java.lang.Class.forName(Unknown Source)
   at ClassNotFoundExample.main(ClassNotFoundExample.java:4)
登录后复制

如果您尝试从另一个目录访问特定类,则需要设置类路径 -

  • 包含以下内容的文件夹(最外层包) .class 文件。

    或者,

  • 包含该类的 jar 文件。

假设我们已经纠正了拼写问题,并尝试从 E:// 目录中的 Java 文件加载该类

示例

 实时演示

public class ClassNotFoundExample {
   public static void main(String args[]) {
      try {
         Class.forName("myPackage.example.Sample");
      }catch (ClassNotFoundException ex) {
         ex.printStackTrace();
      }
   }
}
登录后复制

异常

仍然会遇到相同的异常,因为包含指定类的 .class 文件(或包含它的 jar 文件)的包既不在当前目录中,也不在路径列表中环境变量类路径。

E:\>java ClassNotFoundExample
java.lang.ClassNotFoundException: myPackage.example.Sample
   at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source)
   at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source)
   at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
   at java.base/java.lang.Class.forName0(Native Method)
   at java.base/java.lang.Class.forName(Unknown Source)
   at ClassNotFoundExample.main(ClassNotFoundExample.java:4)
登录后复制

在当前场景中,将类路径设置为包含所需类的包的目录,即“D://”并执行上述java程序,使其工作。

E:\>javac ClassNotFoundExample.java
E:\>java ClassNotFoundExample
The class named Sample loaded successfully.........
登录后复制

以上就是为什么在Java中,当类存在时我们会得到ClassNotFoundException的异常?的详细内容,更多请关注php中文网其它相关文章!

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
相关标签:
来源:tutorialspoint网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号