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

标签: 异常处理散记  java  cmd

起因

在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,打开cmd编辑窗口(免去了跳转地址)
2.1执行前
在这里插入图片描述
2.2 执行javac HelloWorld.java后,生成.class文件
在这里插入图片描述
2.3 执行java HelloWorld,输出函数的内容
在这里插入图片描述

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 当前路径
在这里插入图片描述

3.2 执行语句生成class文件。

javac -d . Hello.java

javac -d . Hello.java

注意这句话里面有一个点,点的前后都需要有空格。
这句话表示根据类Hello.java中的包层级路径来生成对应的class文件。
在这里插入图片描述
查看当前生成的class文件路径
在这里插入图片描述
3.3 回到刚刚的目录,
输入以下语句来执行类。

java test/exam/Hello

java test/exam/Hello

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

3.4 执行后的结果如下
在这里插入图片描述

4、小结

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

java语句运行出错的,在cmd中直接输入cmd会有相关的帮助说明。
在这里插入图片描述
如果嫌弃这里的比较枯燥,看不明白的,可以查看一下别人的解释说明。
这里推荐CSDN 这位博主对java命令的说明(https://blog.csdn.net/Jeff_Liu_Sky/article/details/48955355)
以下部分为引用

引用开始:“

javac是个java语言编译器,它的用法:
在这里插入图片描述
它的作用是把java程序编写的类和接口编译成字节代码的class文件,截图中我们看到它操作的是一个文件,最后会生成一个class文件
javac
而java命令程序则是一个解释器,它的作用是把编译后生成的class文件解释成机器能够识别的机器码,并最终由运行环境中的Runtime对代码进行运行,真正实现我们想要机器完成的工作。从截图的帮助文档中我们看到它要执行的是类,是一个和class文件名字完全相同(大小写也要一样)的类
在这里插入图片描述
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\论坛等地方进行查看。
如果国内的地址查找不到的话,尽快转场StackOverFlow\IT辅助网等各种网站用google搜索相关解答。

版权声明:本文为turbodark原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/turbodark/article/details/106382215

智能推荐

LeetCode刷题(十四)-----字符串-------medium部分(Java、C++)

22. 括号生成 [ “((()))”, “(()())”, “(())()”, “()(())”, “()()()” ] 思路一:c++版本,暴力构造法+剪枝 构造法生成括号 首先分析:需要构造有效的括号,数量上,左右括号分别都为n个。 其次:左括号的数量需要大于等于右括号的数...

双路快速排序法

快速排序法的优化——双路快速排序 上一节我们自己动手写的一个快速排序的算法,在随机数测试中表现得非常好,然而,我们在用高度有序的数组进行测试的时候,发现快速排序的效率变得异常的低下,比归并排序的效率低得多了,近似退回了O(n^2)的复杂度,这是为什么呢?首先让我们来分析一下归并排序的算法思想,归并排序之所以能够达到O(logn)的复杂度,多亏了递归,递归使得把数组不断的二分...

android问题记录

Error: Cannot fit requested classes in a single dex file (# methods: 80441 > 65536) 解决办法: gradle文件的defaultConfig默认配置里面增加...

猜你喜欢

ROS机器人Diego 1# 利用人工智能 风格迁移技术拍摄不同画风的视频

风格迁移,就是将一种图片的风格迁移到其他图片上,改变其他图片的风格,很好玩的一个人工自能模型,github上已经有很多实现的方法,本文参考https://github.com/hzy46/fast-neural-style-tensorflow 的算法,利用Diego1#的平台实现实时视频的风格转换,先上两张图看效果: 是不是很酷呢,其实实现方法和上篇博文中的原理是一样的,只是把人工智能的算法包装...

数据分析学习总结笔记17:文本分析入门案例实战

文章目录 1 数据准备 2 分词 3 统计词频 4 词云 5 提取特征 6 用sklearn进行训练 1 数据准备 数据样例如下, 数据总量为7.7万+: 本节通过一个实战的例子来展示文本分析的最简单流程。首先设定因变量为原始数据中的"评分"。自变量是"评价内容",这里根据评价内容提取TF-IDF特征。之后,通过评价内容的特征建模预测下整体评分。 以上只是最...

LeetCode 150. 逆波兰表达式求值

题目描述 根据逆波兰表示法,求表达式的值。 有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。 整数除法只保留整数部分。 给定逆波兰表达式总是有效的。 换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。 示例 1: 输入:[“2”, “1”, “+”, “3&r...

并查集原理及应用

并查集 树形的数据结构,每个集合有其代表节点,代表节点相同的元素属于同一集合。 find:通过查找节点的代表节点,判断节点所属集合。 union:合并两集合,小集合合并到大集合,使用大集合的代表节点。 在find的递归过程中,让路过节点的父节点直接赋值为代表节点,节省下次查找时间,如图所示。 计算岛的个数 遍历二维数组,遇到1时就将所相连的1都改为2,看看遇到多少次1,就是岛的数量。改数时使用回溯...

linux nutch1.0安装配置

1,下载nutch1.0 下载地址:http://archive.apache.org/dist/nutch/,下载这个文件nutch-1.0.tar.gz   2,上传到服务器 上传位置:/home/www/,解压nutch-1.0.tar.gz #tar -xvf nutch-1.0.tar.gz 重命名 #mv nutch-1.0 nutch   3,修改配置文...