Java新手遇“缺少main方法”错误,请求代码修正以正常运行
解决Java程序“缺少main方法”的问题
嗨,我来帮你搞定这个报错~你的代码里有两个关键问题导致了“缺少main方法”的提示,我会一步步帮你修正:
问题分析
- main方法的签名错误:Java程序的入口方法必须是
public static void main(String[] args),你的代码里的public void main(String[] args)少了static修饰符——JVM需要直接调用这个方法,不需要先创建类的实例,所以static是必须的。 - main方法的位置不对:你把main方法放在了非静态内部类
Time里,非静态内部类依赖于外部类的实例,JVM找不到符合要求的入口方法。
修正方案
我会调整代码结构,把main方法移到外部类中,同时把内部类改为静态内部类(这样可以在静态方法中直接实例化),完整修正后的代码如下:
package Java2; import java.util.Date; public class tenpoint01 { // 将Time改为静态内部类,这样能在静态main方法中直接使用 public static class Time { private int hour; private int minute; private int second; public Time() { this(System.currentTimeMillis()); } public Time(long elapsed) { Date date = new Date(elapsed); this.hour = date.getHours(); this.minute = date.getMinutes(); this.second = date.getSeconds(); } public Time(int hour, int minute, int second) { this.hour = hour; this.minute = minute; this.second = second; } private void setTime(long elapsedTime) { Date date = new Date(elapsedTime); this.hour = date.getHours(); this.minute = date.getMinutes(); this.second = date.getSeconds(); } public int getHour() { return hour; } public int getMinute() { return minute; } public int getSecond() { return second; } @Override public String toString() { return hour + ":" + minute + ":" + second; } } // 标准的程序入口main方法:public static void修饰,放在外部类中 public static void main(String[] args) { Time time = new Time(); Time time2 = new Time(555550000); System.out.println(time); System.out.println(time2); } }
关键修改点说明
- 给
Time类添加static修饰符,使其成为静态内部类,这样不需要依赖外部类tenpoint01的实例就能创建对象。 - 将main方法移到外部类
tenpoint01中,并修正为public static void main(String[] args),这是JVM能识别的标准入口方法。
现在运行这段代码,就能正常输出当前时间和对应时间戳的时间啦~
内容的提问来源于stack exchange,提问作者Rob Steiner
相关产品推荐
相关产品推荐

