Windows cmd命令行运行Java 错误:找不到或无法加载主类

在Windows上运行Java程序时遇到错误:找不到或无法加载主类。该问题可能由于class文件缺失、Java代码错误、环境变量配置不当、路径问题或版本不匹配引起。检查包括确认class文件存在、Java代码规范、配置classpath、切换到class文件目录运行、正确使用javac和java命令,并注意包声明。确保使用相同版本的javac和java,必要时更新环境变量或卸载多余Java版本。

使用Windows自带cdm窗口运行Java提示错误:

1.检查当前进入的路径下是否包含class文件

class文件是java虚拟机能识别的二进制文件,由java文件编译生成。运行java程序时,“.java”后缀文件并不是必须的,只要有class文件就可以运行。一般通过IDE开发工具开发Java项目时,class和java文件会被分别生成到不同目录,因此从cmd运行java程序时会找不到class文件,导致上述错误。因此可以将class文件和java文件拷贝到同一个目录中。

2.检查Java程序(“.java”后缀文件)代码内容:

  • Java保存的文件名必须与类名一致;
  • 如果文件中只有一个类,文件名必须与类名一致;
  • 一个Java文件中只能有一个public类;
  • 如果文件中不止一个类,文件名必须与public类名一致;
  • 如果文件中不止一个类,而且没有public类,文件名可与任一类名一致。

另外,通过java文件使用javac命令生成class文件时,class文件的文件名也将与java文件的文件名保持一致。

 3.检查环境变量配置,具体可以百度如何配置环境变量,尤其是:

在classpath的最前面要加一个本目录路径,用”.“表示,如果后面还有其他路径内容,则“.”要加“;”进行分隔表示。注意都是英文状态下的字符。

这样在运行java命令运行程序时,才会在当前路径下搜索到包含当前类的class文件。

4.打开cdm跳转到class文件所在路径后再运行

在cmd下运行javac 和java的时候,必须在该java文件的目录下运行,这样生成的class也在该目录下,java的时候也会第一个就在本目录下找class文件,就不会提示找不到了。进入cmd就会直接到c:\个人文件夹下,而一般的java文件会用其它软件编写,放在选定的路径下,这两个路径很少能主动重合,因此需要注意。

5.运行命令

使用“javac(空格)文件名.java”命令编译当前java文件,如果没有报错则会生成class文件,待生成class文件后,使用“java(空格)类名”的方式运行代码。注意此处使用java命令时,后面不能带有“.class”后缀或“.java”后缀,通过tab键是默认给加后缀的,运行前建议最先检查下,如果加了需要把“.class”删除。

6.关于路径问题,如果java代码中包含“包”的声明,需要特别注意

为了更好地组织类,Java 提供了包机制,用于区别类名的命名空间。

包语句的语法格式为:package pkg1[.pkg2[.pkg3…]]; 通常放在文件的最开头。

在包下的类,需要在“.java”文件所在目录使用javac进行编译(会在当前目录生成class文件),然后返回包的最外层目录运行,包名的嵌套关系使用“.”进行连接,最后跟上类名,例如:“java pkg1.pkg2.classname”。

7. 使用windows自带的cmd或者编程工具提供的虚拟Terminal窗口或者PowerShell均可以运行java代码,但PowerShell的输入重定向不同于cmd。cmd中才可以使用“ < "进行输入重定向。

PowerShell中的输入重定向:

PowerShell中使用“ < "会报错:

8.运行时出现错误Error: A JNI error has occurred, please check your installation and try again

原因是:使用了不同java版本的javac和java命令,即编译java程序的java版本和运行java程序的java版本不同。

可以使用如下命令比对一下版本:

javac -version
java -version

解决方法:

①卸载电脑上多余的java版本,仅保留一个,可以手动卸载,也可以使用java官网有专门的卸载工具,地址:https://www.java.com/zh_CN/download/faq/remove_olderversions.xml

②检查电脑环境变量设置,将多余版本的环境变量删去。

③强制使用同一种版本的java和javac,可以通过编程工具带有的虚拟环境完成,例如在idea中直接编译运行。

如有其他问题及解决方法欢迎在评论区补充交流!

参考链接 :

http://xinzhi.wenda.so.com/a/1523443002618642
https://www.cnblogs.com/baby-zhude/p/7918724.html
https://blog.youkuaiyun.com/zhaofen_7/article/details/90273128
https://jingyan.baidu.com/article/fdffd1f876ca76f3e88ca14c.html

### CMD 中执行 Java 文件时遇到的 '不到无法加载' 错误解决方案 #### 1. 验证环境变量设置 确保 `JAVA_HOME` 和 `Path` 环境变量已正确配置。错误的路径可能导致 JVM 无法到所需的库文件[^4]。 ```bash echo %JAVA_HOME% java -version ``` 如果输出显示不正确的路径版本信息,则需重新检查并修正环境变量设置。 #### 2. 编译源代码为 `.class` 文件 确认目标 Java文件已经成功编译成对应的字节码文件(`.class`)。未经过编译的 `.java` 文件不会被 JVM 认识和执行[^3]。 ```bash javac HelloWorld.java dir /b *.class ``` 以上命令会尝试编译名为 `HelloWorld.java` 的文件,并列出当前目录下的所有 `.class` 文件来验证编译是否成功。 #### 3. 使用绝对路径指定名 当在命令行中启动应用程序时,建议使用完整的包结构作为前缀指明名称。例如,对于位于默认包中的 `MyApp` : ```bash java MyApp ``` 而对于属于特定命名空间(如 `com.example.app`)内的同名,则应这样调用: ```bash java com/example/app/MyApp ``` 注意这里不需要带上扩展名 `.class`;另外,在 Windows 平台上应当采用正斜杠 `/` 而不是反斜杠 `\` 来分隔各级子包[^2]。 #### 4. 清理不必要的 CLASSPATH 设置 某些情况下预设好的 `CLASSPATH` 变量可能会干扰正常查机制。除非确实有必要自定义此参数,否则最好将其移除以免造成混淆。 ```batch set CLASSPATH= ``` 此操作仅影响当前 shell session 内后续发出的新指令,重启终端后即恢复原状。 #### 5. 测试基础功能 最后可以简单测试 JDK 安装状况以及基本语法支持情况,排除其他潜在因素的影响[^1]。 ```bash echo "public class Test { public static void main(String[] args) {} }" >Test.java javac Test.java && java Test ``` 这段脚本创建了一个最简单的 Java 应用程序实例,接着立即对其进行编译与运行。假如一切顺利的话应该没有任何输出——这表明至少最基本的开发环境是可用的。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值