Could not find or load main class error in cmd
在Windows CMD中编译问题之后,我改变了路径,然后开始编译Java文件。
1-)我添加了环境变量:2个新的用户变量;将它们命名为路径和类路径;我将变量值添加到JDK位置,我还对系统变量执行了相同的过程。2-)我编写了一个简单的程序,它只打印hello world,并将其命名为m,这样我就能知道它是否工作。我把它保存在桌面上,然后写在Cmd CD桌面上…在同一个LOC中,我编写了JavaM.java,然后编译成功,生成它的类M.类,然后用CMD JavaM编写,不幸的是,我得到了这个错误。错误:无法找到或加载主类
*程序没有语法或逻辑错误,我只是用helloworld尝试了一下,正如我前面提到的程序,同样的问题继续。谢谢
- 我们能看到您正在运行的程序的代码吗(helloworld)?
- 公共类m公共静态void main(string[]args)system.out.println("hello world");
- 在不知道您使用的命令、执行时所在的目录以及类文件的位置的情况下,无法解释为什么会出现此错误以及如何避免出现此错误。
- 我更改了路径系统变量,这个问题会导致这个问题吗?
- 运行程序时设置了什么调用路径?没有默认类路径。
- @ JBNizet,我使用JavaCaseNox.java,然后在桌面上编译并执行一个< CaseNox>类(我只是尝试在桌面上),然后在CMD Java[CaseNox>中写入]之后。得到错误
- java采用类名作为参数。不是文件名。如果该类在默认包中,并且命名为helloworld,那么它应该是java HelloWorld。你为什么不提供我在你的问题中所要求的所有元素呢?
- "JBNizet,我不使用这个网站,我是新的,我会小心:"我只是设置类名M,文件名是M.JAVA编译后生成M.class文件。
- 是的,是的。你还没有回答我的问题。如果你需要帮助,一定要回答他们。
- @我编辑了我的问题,我只写了所有的东西。这些位置都是桌面,但位置并不重要。我的基本程序在不同的LOC中,但我不能简单地在CMD中运行Java程序,但在Eclipse中没有问题。
- 类的位置确实很重要。很多。
- "找不到或加载主类"是什么意思的可能副本?
java在类路径中列出的目录和JAR文件中查找类(运行时环境附带的标准类除外)。
运行程序时没有传递任何类路径选项。因此,Java寻找一个定义目录和JAR文件列表的EDCOX1×1环境变量。
大概,你没有任何这样的环境可用(这是一件好事,顺便说一句)。因此,您只需将类路径作为Java的选项传递:
这告诉Java类文件应该在当前目录中找到(EDOCX1,2)。由于类位于默认包中,因此它将在当前目录中查找m.class。如果M在com.mycompany包中,您将使用
1
| java -cp . com.mycompany.M |
它将从当前目录开始查找文件com/mycompany/M.class。
当然,如果您从另一个目录运行这个命令,那么您应该更改选项的值。例如:
1
| java -cp c:\Desktop com.mycompany.M |
将类放在默认包中是一种糟糕的做法。习惯将它们放在包中。
注意,命名一个类M是很糟糕的。给你的类起有意义的名字,比如Bicycle或PasswordGenerator。
- 非常感谢Verry,我不知道ClassPath的事。我命名它只是为了测试,因为我不知道如何在CMD中运行Java程序。我的基本Java项目在包中。晚上好。