欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

异常处理散记(二):cmd下javac报错找不到或无法加载主类

程序员文章站 2022-03-10 16:52:49
...

起因

在cmd环境直接进行代码编译的时候居然出现了这个错误。
之前倒是没想到还会出现javac的错误。

1、环境配置正常

以下名称分别对应在环境变量中的名字,代码块中的地址为需要填写的值。
JAVA_HOME地址

C:\Program Files\Java\jdk1.8.0_162

Path地址

%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

CLASSPATH地址

.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar

需要在CLASSPATH环境变量中加入“.;”即可。“.”的意思是搜索当前目录。

Java是一种对格式和内容要求比较严格的语言。
一个类的全名应该是包名+类名。

所以以下分为两种情况来讨论:
1)没有写明包名,
2)写明包名。

2、没有包的类

HelloWorld.java

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World");
		System.out.println("Hello This Place");
    }
}

包所在目录
异常处理散记(二):cmd下javac报错找不到或无法加载主类
在当前地址栏直接输入cmd,打开cmd编辑窗口(免去了跳转地址)
2.1执行前
异常处理散记(二):cmd下javac报错找不到或无法加载主类
2.2 执行javac HelloWorld.java后,生成.class文件
异常处理散记(二):cmd下javac报错找不到或无法加载主类
2.3 执行java HelloWorld,输出函数的内容
异常处理散记(二):cmd下javac报错找不到或无法加载主类

3、有包的类

Hello.java的内容,有一个二级的包路径。
package的首字母小写,包名需要以;封号结尾。

package test.exam;
public class Hello {
    public static void main(String[] args) {
        System.out.println("Hello ");
		System.out.println("Hello with package");
    }
}

3.1 当前路径
异常处理散记(二):cmd下javac报错找不到或无法加载主类

3.2 执行语句生成class文件。

javac -d . Hello.java

javac -d . Hello.java

注意这句话里面有一个点,点的前后都需要有空格。
这句话表示根据类Hello.java中的包层级路径来生成对应的class文件。
异常处理散记(二):cmd下javac报错找不到或无法加载主类
查看当前生成的class文件路径
异常处理散记(二):cmd下javac报错找不到或无法加载主类
3.3 回到刚刚的目录,
输入以下语句来执行类。

java test/exam/Hello

java test/exam/Hello

跳到包的路径的时候,需要为正斜杠/,因为\反斜杠这个符号是无法跳转进去的。

3.4 执行后的结果如下
异常处理散记(二):cmd下javac报错找不到或无法加载主类

4、小结

在过程中一定要确保java的配置地址是正确的,尤其是Path。
因为一般Path中还有很多其他软件配置的path地址,比较繁杂。
推荐将环境变量值这里的参数复制出来到文本编辑器中查看。

java语句运行出错的,在cmd中直接输入cmd会有相关的帮助说明。
异常处理散记(二):cmd下javac报错找不到或无法加载主类
如果嫌弃这里的比较枯燥,看不明白的,可以查看一下别人的解释说明。
这里推荐CSDN 这位博主对java命令的说明(https://blog.csdn.net/Jeff_Liu_Sky/article/details/48955355)
以下部分为引用

引用开始:“

javac是个java语言编译器,它的用法:
异常处理散记(二):cmd下javac报错找不到或无法加载主类
它的作用是把java程序编写的类和接口编译成字节代码的class文件,截图中我们看到它操作的是一个文件,最后会生成一个class文件
异常处理散记(二):cmd下javac报错找不到或无法加载主类
而java命令程序则是一个解释器,它的作用是把编译后生成的class文件解释成机器能够识别的机器码,并最终由运行环境中的Runtime对代码进行运行,真正实现我们想要机器完成的工作。从截图的帮助文档中我们看到它要执行的是类,是一个和class文件名字完全相同(大小写也要一样)的类
异常处理散记(二):cmd下javac报错找不到或无法加载主类
java 命令的作用就是Java虚拟机的作用,虚拟机的功能如下:

通过 ClassLoader 寻找和装载 class 文件 解释字节码成为指令并执行,提供 class 文件的运行环境 进行运行期间垃圾回收
提供与硬件交互的平台 ———————————————— 版权声明:本文为CSDN博主「步步为峰」的原创文章,遵循CC 4.0
BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/jeff_liu_sky_/article/details/48955355

引用结束。”

5、总结

这个不是什么大问题,就是个小的配置,结果导致耽误了1、2个小时的时间。
写代码一定要注意环境的配置,编写的内容语句的正确性。
才能写出健壮的程序。

如果有不清楚的地方,
一定尽快在CSDN\博客园\掘金,对应软件的官方网站\JIRA\Confluence\论坛等地方进行查看。
如果国内的地址查找不到的话,尽快转场*\IT辅助网等各种网站用google搜索相关解答。