2023.06.06 | admin | 87次围观
先声明,这只是找不到或无法加载主类的原因之一,你在这里并不一定能够找到方法。这个问题可能是有些初学者会犯的,就是我的程序很简单应该没有问题,我的环境变量也配置好了,编译也没有问题,怎么总是在运行的时候出这个问题呢?
这很有可能是你的程序中有包声明,即有package语句找不到或无法加载主类,将程序放在了包中。但是你编译的时候没有生成包目录或者运行的时候没有指定包,就会出现这个问题。下面以一个例子说明这个问题。
下面是一个程序,很简单:
package Lee;
public class Hello
{
public static void main(String[] args)
{
System.out.println("Hello World!");
}
}
打开cmd,转到放程序的目录比如说是dir\下面(该程序的路径为dir\Hello.java),然后执行
javac Hello.java
没有问题,在dir\下面生成了 Hello.class文件(dir\Hello.class)
然后执行这个文件
java Hello
就会蹦出这个错误提示
错误: 找不到或无法加载主类 Hello
这就是因为,在上面的程序中有包声明的语句,将该程序放在了一个叫Lee的包中,而在编译的时候没有生成相应的包层级。应该用下面的方法编译
javac -d . Hello.java
-d .是指明生成的目录为当前目录找不到或无法加载主类,也即dir\。运行这个命名后就会在dir\下面生成一个叫Lee的文件夹,文件夹下有一个叫Hello.class的文件(dir\Lee\Hello.class)。
运行该文件时,不要到dir\Lee\下面运行,就在dir\下面运行
java Lee.Hello
现在你应该能够看都程序正确的运行结果了。
版权声明
本文仅代表作者观点。
本文系作者授权发表,未经许可,不得转载。
发表评论