鱼C论坛

 找回密码
 立即注册
查看: 527|回复: 3

[已解决]Java学习问题-求助!

[复制链接]
发表于 2023-5-10 19:47:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
学习内部类的时候遇到这个情况,我debug会跳入SecureClassLoader,里面的代码我也看不懂
屏幕截图 2023-05-10 194142.png

代码如下
  1. public class homeWork07 {
  2.     public static void main(String[] args) {
  3.         Car car1 = new Car(41);
  4.         car1.getair().flow();


  5.     }
  6. }

  7. class Car {
  8.     private double tem;

  9.     public Car(double tem){
  10.         this.tem = tem;

  11.     }
  12.     public air getair(){
  13.         return new air();
  14.     }


  15.     public class air {
  16.         public void flow() {
  17.             if (tem > 40) {
  18.                 System.out.println("吹冷风");
  19.             } else if (tem < 0) {
  20.                 System.out.println("吹热风");
  21.             } else {
  22.                 System.out.println("空调关闭");
  23.             }
  24.         }
  25.     }
  26. }
复制代码


最佳答案
2023-5-10 19:56:57
liuhuiqin 发表于 2023-5-10 19:50
所以并不是我写的代码的问题吧?

从你提供的代码来看,它看起来是正确的。这个异常  java.lang.NoClassDefFoundError  通常是因为 Java 虚拟机在运行时找不到定义的类。错误信息 "wrong name:com/chat10ex/Car" 提示可能是你的类的包结构或者类的名称有问题。

你的类  Car  和  homeWork07  是否在正确的包内?根据错误信息,Java 虚拟机期望  Car  类在  com.chat10ex  包中。你需要确认你的代码的包结构是否正确, Car  类是否在  com.chat10ex  包中,并且你的  homeWork07  是否也在同一个包下。

此外,检查一下你的类名和文件名是否一致,因为在 Java 中,公共类的名称必须与文件名相同。例如,如果你的  Car  类是公共类,那么它应该在名为  Car.java  的文件中。

你也需要确认你的类路径是否正确。类路径是 JVM 和 Java 应用程序用来查找类的位置的一种环境变量。如果类路径设置不正确,那么 JVM 可能无法找到你的类。

总的来说,这个问题可能与你的代码无关,更可能是与你的项目配置和环境设置有关。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-10 19:47:47 | 显示全部楼层
在Java中,内部类是定义在另一个类中的类。这里的 air 类就是 Car 类的一个内部类。在 main 方法中,我们创建了一个 Car 对象 car1 ,并调用它的 getair 方法获取一个 air 对象,接着调用 air 对象的 flow 方法。在 flow 方法中,根据 tem 的值进行不同的处理,输出不同的结果。如果 tem 大于40,则输出“吹冷风”,如果小于0,则输出“吹热风”,否则输出“空调关闭”。

至于你提到的跳入 SecureClassLoader 的问题,这可能是因为你使用了某些库或框架,导致程序进入了这个类加载器。不过,这并不影响你对代码的理解和学习。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-10 19:50:02 | 显示全部楼层
isdkz 发表于 2023-5-10 19:47
在Java中,内部类是定义在另一个类中的类。这里的 air 类就是 Car 类的一个内部类。在 main 方法中,我们创 ...

所以并不是我写的代码的问题吧?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-10 19:56:57 | 显示全部楼层    本楼为最佳答案   
liuhuiqin 发表于 2023-5-10 19:50
所以并不是我写的代码的问题吧?

从你提供的代码来看,它看起来是正确的。这个异常  java.lang.NoClassDefFoundError  通常是因为 Java 虚拟机在运行时找不到定义的类。错误信息 "wrong name:com/chat10ex/Car" 提示可能是你的类的包结构或者类的名称有问题。

你的类  Car  和  homeWork07  是否在正确的包内?根据错误信息,Java 虚拟机期望  Car  类在  com.chat10ex  包中。你需要确认你的代码的包结构是否正确, Car  类是否在  com.chat10ex  包中,并且你的  homeWork07  是否也在同一个包下。

此外,检查一下你的类名和文件名是否一致,因为在 Java 中,公共类的名称必须与文件名相同。例如,如果你的  Car  类是公共类,那么它应该在名为  Car.java  的文件中。

你也需要确认你的类路径是否正确。类路径是 JVM 和 Java 应用程序用来查找类的位置的一种环境变量。如果类路径设置不正确,那么 JVM 可能无法找到你的类。

总的来说,这个问题可能与你的代码无关,更可能是与你的项目配置和环境设置有关。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-27 18:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表