Java环境变量设置后,编写第一个程序报错:找不到或无法加载主类 D:\java\HelloWorld

Java 环境变量配置完后,按照网上说的办法测试都成功了,但在写第一个HelloWorld程序时,编译通过了,运行时报“找不到或无法加载主类 D:\java\HelloWorld”错误。
运行错误

网上解决办法

编程时习惯地认为一个执行命令后面一般跟的是一个文件,所以毫不犹豫地敲入

javac D:\java\HelloWorld.java

发现没有报错,相应文件下生成了HelloWorld.class文件,说明编译成功,兴奋之余,接着很自然地敲入

 java D:\java\HelloWorld.class 

接着就报了上面图片中的错误,开始在网上搜,大部分解释是环境变量配错了,重新配置环境变量

  • 有的说应该去掉.class 后缀
java D:\java\HelloWorld
  • 有的说直接执行
java HelloWorld
  • 还有的说“CLASSPATH值的最后没;(分号)会出现以下错误:错误:找不到或无法加载主类HelloWorld。”

  • 还有一种说法是“java HelloWorld 时,字母大小写搞错也出错”

结果试了各种办法无解,有种想把电脑摔了的冲动,最后认真看了一下javac和java命令帮助文件,联想一下编译知识才恍然发现自己犯了一个特别低级的错误。

原因

Java编译原理不理解,写程序不认真

javac是个java语言编译器,它的用法:
javac用法
它的作用是把java程序编写的类和接口编译成字节代码的class文件,截图中我们看到它操作的是一个文件,最后会生成一个class文件

javac <options> <source files>

而java命令程序则是一个解释器,它的作用是把编译后生成的class文件解释成机器能够识别的机器码,并最终由运行环境中的Runtime对代码进行运行,真正实现我们想要机器完成的工作。从截图的帮助文档中我们看到它要执行的是类,是一个和class文件名字完全相同(大小写也要一样)的类
java命令帮助
java 命令的作用就是Java虚拟机的作用,虚拟机的功能如下:

  • 通过 ClassLoader 寻找和装载 class 文件
  • 解释字节码成为指令并执行,提供 class 文件的运行环境
  • 进行运行期间垃圾回收
  • 提供与硬件交互的平台

解决办法

执行java命令的时候要到class 文件所在的目录下,并且class 这个参数应该只填类的名称(即和class文件名字完全相同)
我的文件是放在了D:\java目录下,cmd后切换到D:\java 目录下,然后再执行编译和运行命令。
切换目录运行命令

小结

  • 原理性的知识不可忽视,需要在实践中不断理解,达到融会贯通;
  • 做什么事情都要认真,很多错误都是不认真造成的。

你可能感兴趣的:(java,java,环境变量设置,java编译原理)