java - 从不同类调用方法时出现 NoSuchMethodError

标签 java methods

我正在尝试调用不同类中的方法,因此我已经在调用它的类中启动了我尝试访问的类,代码如下:

Car c = new Car();
Van Vans = new Van();
SportsCar s = new SportsCar();
MiniVan m  = new MiniVan();

while (SelectMotor < 1 || SelectMotor  > 4) {
    System.out.println("\t\t Choose the vechile you wish to add:");

    System.out.println("1.Car");
    System.out.println("2.Van");
    System.out.println("1.SportsCar");
    System.out.println("4.MiniVan");

    SelectMotor = in.nextInt(); 

    if (SelectMotor == 1) {
        c.AddCar();
    }

每当我运行它时,我都会收到此错误:

NoMethodError

这是包含我调用的方法的代码:

import java.util.Scanner;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.io.IOException;

class Car extends Vehicle {
    Vehicle v = new Vehicle();
    WriteFile WriteCarDetails = new WriteFile(CarDetails, true);
    Scanner SaveCarDetails = new Scanner(System.SaveCarDetails);
    String WriteMe;

    void AddCar() {
        System.out.println("\n\n\t\t\tAdding a Car");
        System.out.print("\nEnter Make: ");
        v.SetMake = SaveCarDetails.next;
        System.out.print("\nEnter Model: ");
        v.SetModel = SaveCarDetails.next;
        System.out.print("\nEnter Litre: ");
        v.SetLitre = SaveCarDetails.nextDouble;
        System.out.println("\nEnter Top Speed: ");
        v.SetTopSpeed = SaveCarDetails.nextInt;
        System.out.println("\nEnter Gears: ");
        v.SetGears = SaveCarDetails.nextInt;
        System.out.println("\nEnter Doors: ");
        v.SetDoors = SaveCarDetails.nextInt;
    }
}

我是 Java 新手,但有一些 C# 经验,我不明白为什么会出现上图所示的错误,据我所知,我尝试访问的类已启动,方法的名称匹配。我收到错误是因为我试图在不先访问父类(super class)的情况下访问子类吗?这是我认为事情出了问题的唯一奇怪的方式。感谢您的帮助!

最佳答案

正如其他人在评论中建议的那样,您可能会看到此问题,因为 AddCar 方法的可见性(考虑将其重命名为 addCar ,因为这样做会更容易)符合java的命名约定)。将其更改为 public 可能会有所帮助,但如果没有......

另一种可能是您的类路径上可能有旧版本的 Car 类,但没有 AddCar 方法。由于您能够很好地进行编译,因此在我看来,您的部署环境中的类路径上的 Car 类版本错误。尝试重新编译所有内容,然后确保所有类的最新版本都位于部署区域的类路径中。

关于java - 从不同类调用方法时出现 NoSuchMethodError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32382685/

相关文章:

c# - 如何使用线程启动带参数的方法

java - 计算器输入是字符串

java - 使用 string.split 时的 ArrayIndexOutOfBounds

java - 如何访问 getPixel 中的数组?

c# - System.Void类型如何为不返回值的方法指定返回值类型?

java - 在查找模式下将 int[] 返回到 main 时也遇到问题

java - 如何使用 Maven 创建具有依赖项的可执行/可运行 JAR?

java - 使用 Java 8 从(嵌套列表)列表列表中获取最大和最小总和的列表

java - 在 Java 中打印 OO 表达式树

java - Java中如何调用带有函数输入的方法?