如何解决Java中的“找不到或加载主类包”?
编写Java程序后,需要使用javac命令对其进行编译,这将向您显示发生了编译时错误(如果有)。
解决它们并完全编译成功后,将在当前文件夹中生成一个扩展名为.class的可执行文件,其名称与类名相同。
然后您需要使用java命令执行它-
java class_name
在执行期间,当JVM找不到具有指定名称的.class文件时,会出现运行时错误,提示“找不到或加载主类”错误,-
D:\sample>java Example Error: Could not find or load main class Example Caused by: java.lang.ClassNotFoundException: Example
解
为避免此错误,您需要指定当前目录中.class文件的绝对(包括软件包)名称(仅名称)。
以下是可能发生此错误的方案-
错误的类名-您可能指定了错误的类名。
class Example { public static void main(String args[]){ System.out.println("This is an example class"); } }
错误
D:\>javac Example.java D:\>java Exmple Error: Could not find or load main class Exmple Caused by: java.lang.ClassNotFoundException: Exmple
解决方案-在这个类名中拼写错误,我们需要对其进行更正。
D:\>javac Example.java D:\>java Example This is an example class
错误的大小写-您需要使用相同的大小写指定类的名称Example.java与example.java不同。
class Example { public static void main(String args[]){ System.out.println("This is an example class"); } }
错误
D:\>java EXAMPLE Error: Could not find or load main class EXAMPLE Caused by: java.lang.NoClassDefFoundError: Example (wrong name: EXAMPLE)
解决方案-在这种情况下,该类名的大小写错误,应进行修饰。
D:\>javac Example.java D:\>java Example This is an example class
错误的软件包-您可能在软件包中创建了.class文件,并尝试在没有软件包名称或软件包名称错误的情况下执行。
package sample; class Example { public static void main(String args[]){ System.out.println("This is an example class"); } }
错误
D:\>javac -d . Example.java D:\>java samp.Example Error: Could not find or load main class samp.Example Caused by: java.lang.ClassNotFoundException: samp.Example
解决方案-在这种情况下,我们提到了错误的程序包名称。在执行时,我们需要指定.class文件所在的正确程序包名称,如下所示:
D:\>javac -d . Example.java D:\>java sample.Example This is an example class
包含.class扩展名-执行文件时,无需在程序中包含.class扩展名,只需指定类文件的名称即可。
错误
D:\sample>java Example.class Error: Could not find or load main class Example.class Caused by: java.lang.ClassNotFoundException: Example.class
解决方案-执行程序时不需要扩展名 .class。
D:\sample>java Example This is an example class