JAVA中无法加载主类什么意思_找不到或无法加载主类什么意思?

今天我们将探讨java的一个常见问题,即如何修复java中的“error:couldnotfind or load main class”错误。顾名思义,当java找不到您要执行的类时,就会发生这个错误。为了更好地理解错误,您应该熟悉类路径CLASSPATH。如果你不熟悉类路径,那么请检查一下什么是类路径以及它与路径的区别。

如果java查找所有类文件的CLASSPATH环境变量未找到类,则会出现“找不到或无法加载主类:XXX”,其中类名为XXX。

63468371bcdcd51fd068b96b6bf35e2e.png

1. 从java命令调用.class文件

public class HelloWorld {

public static void main(String args[]) {

System.out.println(" You have just run HelloWorld !");

}

}

假设我有一个简单的HelloWorldJava程序。如果我用命令编译它

javac HelloWorld.java

那么HelloWorld.class类文件已创建。

如果尝试使用java命令运行.class文件,则会出现以下错误:

java HelloWorld.class

你应该试试:

java HelloWorld

耶!!你的问题解决了。

You have just run HelloWorld !

2. 如果你的casing不正确

编译代码后,运行以下命令

java helloworld

然后出现“找不到或加载主类helloworld”错误。确保套管正确。在我们的程序中,它应该是HelloWorld(其中hello的'H'和world的'W'是大写的)。

java HelloWorld

耶!它可以很好的打印出来

You have just run HelloWorld !

3. 在包中初始化

在下面的示例中,有个HelloWorld类在com.javahunger包。

package com.javahungry;

/**

* Java program to demonstrate

* Error :Could not find or load main class

*

* @author Subham Mittal

*/

public class HelloWorld {

public static void main(String args[]) {

System.out.println(" You have just run HelloWorld !");

}

}

如果你试着去调用:

java HelloWorld

它将导致错误:无法找到或加载主类HelloWorld。发生此错误是因为必须使用其完全限定名调用它。很明显,这个类的名称不是HelloWorld,而是com.javahungry.HelloWorld. 尝试执行HelloWorld无效,因为不存在具有该名称的类。反正不在当前类路径上。

java com.javahungry.HelloWorld

上述命令还将导致错误:无法找到或加载主类HelloWorld,因为未设置CLASSPATH环境变量。我不使用-cp命令来指定路径。默认情况下,java在默认目录中搜索类文件。

java -cp . com.javahungry.HelloWorld

如果classpath类路径正确,那么上面的命令将运行HelloWorld程序。否则,还会导致错误:无法找到或加载主类HelloWorld,因为-cp .命令确保JVM在当前目录中查找类文件。

如果错误仍然存在,请执行以下步骤。

必须确保.class文件的位置已添加到类路径中。假设“/Users/SubhamMittal/Desktop/”在类路径classpath上,JVM查找名为com.javahungry.HelloWorld,它将在以下路径中查找.class文件:

“/Users/SubhamMittal/Desktop/com/javahungry/HelloWorld”

java -cp /Users/SubhamMittal/Desktop/ com.javahungry.HelloWorld

耶!它会打印出来

You have just run HelloWorld !

上面的例子是在macos上执行的。

4. 在Windows操作系统的包中初始化

假设编译后的java类即HelloWorld(如上所示)位于下面的路径中

D:\project\com\javahungry\

HelloWorld类的全名是

com.javahungry.HelloWorld

所以用cd .. 返回命令以到达主目录

D:\project

然后发出java命令

java com.javahungry.HelloWorld

耶!程序在没有设置任何类路径的情况下成功运行。这是因为java正在寻找由.(dot)表示的当前目录,并且能够找到.\com\javahunger\HelloWorld.class类.

它会打印出来

You have just run HelloWorld !

5. 将CLASSPATH设置为当前目录

如果.class文件在当前文件夹中,则设置. 到类路径CLASSPATH(注意,在Windows中,类路径分隔符是分号;而在Linux中,分隔符是冒号:)。

您可以在Windows中设置类路径:

set CLASSPATH = %CLASSPATH%;.

(注 . 最后为当前目录添加)

您可以在Linux中设置类路径:

export CLASSPATH = ${CLASSPATH}:.

(注.最后为当前目录添加)

如果您使用的是java 1.5或1.6,则不会出现错误:java.lang.NoClassDefFoundError : HelloWorld。从JDK1.7开始,我们就收到了这个新错误。好消息是,解决方案完全相同。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值