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

Java运行报java.lang.NoSuchMethodException: Virual.main错误如何解决?

问题原因&修复方案

1. 直接报错的核心原因

你当前启动类选错了:

java.lang.NoSuchMethodException: Practice.Virual.main [class [Ljava.lang.String;]
这个错误表示JVM在你指定的启动类Virual里找不到入口方法main,你的main方法实际写在residentinfo类里,运行时选择residentinfo作为启动类即可解决该报错。

2. 代码其他语法/逻辑问题

  • 你贴出的代码片段缺少Virual类的定义开头,需要在属性定义最上方补上:
public class Virual {
  • 缺少Scanner的导入语句,在代码最开头加上:
import java.util.Scanner;
  • Scanner输入逻辑存在换行残留问题:调用nextInt()读取整数后,输入缓冲区会残留换行符,后续的nextLine()会直接读取到空字符串,不会等待用户输入。需要在每次nextInt()后额外调用一次nextLine()吃掉残留的换行:
System.out.println("Enter Street No: ");
rsd.streetno = in.nextInt();
in.nextLine(); // 吃掉nextInt残留的换行符,保证后续nextLine正常读取
...
System.out.println("Enter Zip Code: ");
rsd.zipcode = in.nextInt();
in.nextLine(); // 同理需要补充
  • 按照Java类名大驼峰的通用编码规范,建议将residentinfo修改为ResidentInfo。

3. 修复后完整可运行代码

import java.util.Scanner;

public class Virual {
    String name, streetname, barangay, city, region;
    int zipcode, streetno;

    void display() {
        System.out.println("Name: " + this.name);
        System.out.println("Street No: " + this.streetno);
        System.out.println("Street: " + this.streetname);
        System.out.println("Barangay: " + this.barangay);
        System.out.println("City : " + this.city);
        System.out.println("Region: " + this.region);
        System.out.println("Zip Code : " + this.zipcode);
    }
}

class ResidentInfo {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        Virual rsd = new Virual();

        System.out.println("Enter Name: ");
        rsd.name = in.nextLine();
        System.out.println("Enter Street No: ");
        rsd.streetno = in.nextInt();
        in.nextLine();
        System.out.println("Enter Street Name: ");
        rsd.streetname = in.nextLine();
        System.out.println("Enter Barangay: ");
        rsd.barangay = in.nextLine();
        System.out.println("Enter City: ");
        rsd.city = in.nextLine();
        System.out.println("Enter Region: ");
        rsd.region = in.nextLine();
        System.out.println("Enter Zip Code: ");
        rsd.zipcode = in.nextInt();
        in.nextLine();

        rsd.display();
        in.close();
    }
}

运行时选择ResidentInfo作为启动类即可正常执行。

内容的提问来源于stack exchange,提问作者Alain Lado

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 08:06:05