如何解决 Java 中的"无法找到或加载主类包"?
javaobject oriented programmingprogramming
编写 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"); } }
Error
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"); } }
Error
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"); } }
Error
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 扩展名,只需指定类文件的名称即可。
Error
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