当前位置: 首页 > 面试题库 >

Java如何解决ClassNotFoundException?

李耀
2023-03-14
问题内容

我正在尝试运行Java应用程序,但出现此错误:

java.lang.ClassNotFoundException:

冒号到达后,缺少该类的位置。但是,我知道该位置不存在,因为该类位于其他位置。如何更新该课程的路径?它与类路径有关吗?


问题答案:

类路径是要从中加载类的位置的列表。

这些“位置”可以是目录,也可以是jar文件。

对于目录,JVM将遵循预期的模式加载类。如果我的类路径中有目录C:/ myproject / classes,并且尝试加载类com.mycompany.Foo,它将在classes目录下查找名为com的目录,然后在该目录下查找名为mycompany的目录,并最后,它将在该目录中查找名为Foo.class的文件。

在第二种情况下,对于jar文件,它将在jar文件中搜索该类。实际上,jar文件只是上述目录的压缩集合。如果解压缩jar文件,则会按照上述模式获得一堆目录和类文件。

因此,JVM在尝试加载类定义时会从头到尾遍历类路径,以查找该类的定义。例如,在classpath中:

C:/ myproject / classes; C:/myproject/lib/stuff.jar; C:/myproject/lib/otherstuff.jar

JVM将尝试首先在目录类中查找,然后在stuff.jar中查找,最后在otherstuff.jar中查找。

当您收到ClassNotFoundException时,表示JVM遍历了整个类路径,但未找到您尝试引用的类。在Java世界中,解决方案通常是检查类路径。

您可以在命令行中输入java -cp,然后输入您的类路径来定义类路径。在诸如Eclipse之类的IDE中,您将具有一个菜单选项来指定您的类路径。



 类似资料:
  • 我正在尝试用Java解决一个ODE,到目前为止,我已经尝试了两个不同的库。我最信任的是Apache Commons Math,然而,即使是简单的问题,我似乎也得不到正确的解。 当我在Mathematica中求解系统时,我得到了这样的结果: 如果我用Apache Commons Math中的Dormand-Prince8(5,3)求解器求解,我会得到以下结果:

  • 问题内容: 我正在尝试编写简单的Java代码,以在控制台上显示MongoDB集合。我在类路径中添加了mongodb-driver-3.0.0.jar。 但是,当我尝试执行代码时,它在数据库连接行给了我以下错误: 线程“主”中的异常java.lang.NoClassDefFoundError:com.montan.app.MongoDbJdbc.main(MongoDbJdbc.java:12)上的

  • 问题内容: 我有三个方程,如下所示: x + y + z = 100; x + y-z = 50; x-y-z = 10; 如何使用Java查找x,y和z的值? 您有任何可能的解决方案或其他通用框架吗? 问题答案: 您可以使用行列式计算xy和z的值。逻辑可以在这里找到http://www.intmath.com/Matrices- determinants/1_Determinants.php 然

  • 本文向大家介绍JAVA如何解决并发问题,包括了JAVA如何解决并发问题的使用技巧和注意事项,需要的朋友参考一下 并发问题的根源在哪 首先,我们要知道并发要解决的是什么问题?并发要解决的是单进程情况下硬件资源无法充分利用的问题。而造成这一问题的主要原因是CPU-内存-磁盘三者之间速度差异实在太大。如果将CPU的速度比作火箭的速度,那么内存的速度就像火车,而最惨的磁盘,基本上就相当于人双腿走路。 这样

  • 问题内容: 我试图通过我的Web项目上的applet访问客户端的临时目录。 当我自己运行小程序时,它毫无问题地得到了。 当我尝试使用javascript并调用applet方法在我的项目上获取它时,我在javascript控制台上运行。当我尝试读取temp目录下的文件时,我也遇到同样的异常。 这正是我所看到的: 怎么解决? 问题答案: 最简单的解决方案是对applet进行签名。

  • 问题内容: 我已经尝试了Oracle Java教程中的两个示例。它们都可以正常编译,但是在运行时都出现以下错误: 我想我可能将Main.java文件放在错误的文件夹中。这是目录层次结构: 这里是 我在这里做错了什么? 更新 将Main类放入graphics包中(添加package graphics;到其中)后,将类路径设置为“ _test”(包含图形的文件夹),进行编译,然后使用java grap