Java继承代码中已定义main方法却报‘Main method not found in class’错误求助
Java继承代码中已定义main方法却报‘Main method not found in class’错误求助
嗨,我看了你的问题和代码,发现几个大概率导致这个错误的点,咱们一步步来排查:
首先,包名不匹配是最显眼的问题!你代码里的包声明是package code.now;,但错误提示里却显示找不到code.ninja.Derived这个类——code.now和code.ninja完全是两个不同的包路径,这肯定有问题:
- 要么是你代码里的包名写错了(比如本来想写
code.ninja却误写成code.now); - 要么是你运行代码的时候,输入的类名是
code.ninja.Derived,但实际编译后的类属于code.now包。
接下来,就算包名改对了,带包的Java代码也得严格遵循目录结构规则:
如果你的类属于code.now包,那你的Java文件必须放在code/now这个子目录下(比如项目根目录下建code文件夹,再在code里建now文件夹,把代码文件放进去)。
给你一套正确的编译运行步骤,确保不出错:
- 把代码文件(建议命名为
Derived.java,因为main方法在这个类里)放到./code/now/目录下; - 打开终端,切换到项目的根目录(也就是
code文件夹的上级目录); - 编译代码:执行
javac code/now/Derived.java,这会在code/now目录下生成对应的.class文件; - 运行代码:执行
java code.now.Derived,注意这里用点分隔包名和类名,不是斜杠。
另外再确认下你的main方法签名——你代码里写的public static void main(String[] args)是完全正确的,大小写、参数类型都没问题,所以这个不是问题所在。
最后再排查一种小概率情况:有没有可能你编译的时候用了-d参数指定了输出目录,但运行的时候没把这个目录加到类路径里?如果是这种情况,运行时需要加上-cp参数指定类路径,比如java -cp ./out code.now.Derived(假设你把编译后的文件输出到了out目录)。
备注:内容来源于stack exchange,提问作者Goutham
相关产品推荐
相关产品推荐

