You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java运行Car类报NoClassDefFoundError: string错误求助

Java程序运行报错排查

问题背景

开发Java程序时遇到运行报错,排查受阻,需要明确问题原因与修复方向。
程序需要实现的功能要求:

  • 设计对应访问器方法,用于获取对象yearModel、make、speed三个字段的存储值
  • accelerate方法每次被调用时,将speed字段的值加5
  • brake方法每次被调用时,将speed字段的值减5

问题代码

public class Car {
    private int yearModel;
    private string make;
    private int speed;

    public Car() {
        this.yearModel = 2015;
        this.make = "Tesla";
        this.speed = 40;
    }

    // Constructor
    public Car(int yearModel, string make, int speed) {
        this.yearModel = yearModel;
        this.make = make;
        this.speed = speed;
    }

    // Getters
    public int getYearModel() {
        return yearModel;
    }
    public string getMake() {
        return make;
    }

    public int getSpeed() {
        return speed;
    }

    // Setters
    public void accelerate() {
        speed += 5;
    }
    public void brake() {
        speed -= 5;
    }

    public string toString() {
        return "Car: " + yearModel + " " + make + " " + speed;
    }

    public static void main(String[] args) {
        Car myCar = new Car();
        System.out.println(myCar);
        myCar.accelerate();
        System.out.println(myCar);
        myCar.brake();
        System.out.println(myCar);
        Car myCar2 = new Car(2015, "Tesla", 40);
        System.out.println(myCar2);
    }
}

运行报错信息

Error: Unable to initialize main class Car
Caused by: java.lang.NoClassDefFoundError: string

问题原因

Java是严格大小写敏感的编程语言,JDK提供的字符串类型正确类名是java.lang.String,首字母必须大写。
代码中所有声明字符串类型的位置都错误使用了全小写的string,虚拟机无法找到名为string的类定义,因此抛出NoClassDefFoundError,导致主类初始化失败。
错误位置共4处:

  • 成员变量声明:private string make;
  • 带参构造方法参数定义:public Car(int yearModel, string make, int speed)
  • getMake方法返回值声明:public string getMake()
  • toString方法返回值声明:public string toString()

修复方案

将代码中所有小写的string替换为大写开头的String即可,额外建议给重写的toString方法加上@Override注解标记,避免重写时的签名错误。
修复后可正常运行的完整代码:

public class Car {
    private int yearModel;
    private String make;
    private int speed;

    public Car() {
        this.yearModel = 2015;
        this.make = "Tesla";
        this.speed = 40;
    }

    public Car(int yearModel, String make, int speed) {
        this.yearModel = yearModel;
        this.make = make;
        this.speed = speed;
    }

    // 访问器方法
    public int getYearModel() {
        return yearModel;
    }
    public String getMake() {
        return make;
    }
    public int getSpeed() {
        return speed;
    }

    // 加速方法
    public void accelerate() {
        speed += 5;
    }
    // 刹车方法
    public void brake() {
        speed -= 5;
    }

    @Override
    public String toString() {
        return "Car: " + yearModel + " " + make + " " + speed;
    }

    public static void main(String[] args) {
        Car myCar = new Car();
        System.out.println(myCar);
        myCar.accelerate();
        System.out.println(myCar);
        myCar.brake();
        System.out.println(myCar);
        Car myCar2 = new Car(2015, "Tesla", 40);
        System.out.println(myCar2);
    }
}

修复后程序运行输出如下:

Car: 2015 Tesla 40
Car: 2015 Tesla 45
Car: 2015 Tesla 40
Car: 2015 Tesla 40

内容的提问来源于stack exchange,提问作者Pius Kimathi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 17:30:50