JAVA:错误: 编码GBK的不可映射字符;错误: 找不到或无法加载主类;

2年前 (2022) 程序员胖胖胖虎阿
197 0 0

目录

一、编码GBK的不可映射字符:

        1、现象

        2、解决方法

        ANSI:ANSI是什么编码? - malecrab - 博客园 (cnblogs.com)

二、找不到或无法加载主类


一、编码GBK的不可映射字符:

        1、现象

在初学过程中,不会用到相关的代码工具,经常会使用CMD来运行java程序,有的时候会报该错误。看源代码:

        float score;
        String grade="";
        Scanner inScore = new Scanner(System.in);
        score = inScore.nextFloat();
        if (score < 0 || score > 100) {
            grade = score + "输入成绩不合法";
        } else if (score >= 90) {
            grade = "A";
        } else if (score >= 80){
            grade = "B";
        }
        System.out.print(grade);

编译错去的原因是因为输出的内容中以及注释中含有中文,导致了类似与下图的错误:

JAVA:错误: 编码GBK的不可映射字符;错误: 找不到或无法加载主类;

因为CMD运行窗口在运行Java程序的时候,默认编码格式是GBK,但是在代码编写时,JAVA采用的编码方式是Unicode编码方式,中文亦是,这就导致编码和解码所用的对照表是不相同的标准,导致我们所看到的乱码问题。

        2、解决方法

        如果使用的是notpad++编辑器工具,可以在进行代码的编写之前,将编码方式转换围殴“使用ANSI格式编码”,注意先后顺序,要先进行编码的转换在进行编码,如果已经编码可以先进行剪切,转换编码方式后再进行粘贴即可。

        ANSI:ANSI是什么编码? - malecrab - 博客园 (cnblogs.com)

        如果使用的其他的工具进行代码的编写,可以使用-encoding指令来为文件制定编码格式,例如:如上的可以写为java -encoding UTF-8  test02.java,即可成功的进行编译和运行。

二、找不到或无法加载主类

JAVA:错误: 编码GBK的不可映射字符;错误: 找不到或无法加载主类;

 对test02通过终端进行运行,报以上错误

因为java中完整的类名是包名+类名,路径:D:\Idea\JAVATEST\src\test

有包test,故执行时,在类名那里应该写入:test.test02.java

但是按照这个路径进行运行指令,仍然报错

JAVA:错误: 编码GBK的不可映射字符;错误: 找不到或无法加载主类;

 因为按照这种写法,其路径就成为了

D:\Idea\JAVATEST\src\test\test\test02.class

很明显这个路径是错误的,所以在运行时会报错,所以真正的运行路径应该是:

D:\Idea\JAVATEST\src\test\test02.class

所以应该将路径退回到D:\Idea\JAVATEST\src 才可以正确执行

JAVA:错误: 编码GBK的不可映射字符;错误: 找不到或无法加载主类;

以下结论转字文二连接:

         java执行class文件对package的路径是强依赖的。它在执行的时候会严格以当前用户路径为基础,按照package指定的包路径转化为文件路径去搜索class文件。
程序在运行的时候具体是如何确定.class文件位置的呢?
       Java解释器的运行过程:首先,找出环境变量CLASSPATH(可以通过操作系统来设置)。CLASSPATH包含一个或多个目录,用作查找.class文件的根目录。从根目录开始,解释器获取包名称并将每个句点替换成反斜杠,以从CLASSPATH根中产生一个路径(例如,package fruit.Apple就变成为fruit/Apple或fruit/Apple或其他,这将取决于操作系统)。得到的路径会与CLASSPATH中的各个不同的根目录路径相连接以获得一个完整的目录路径,解释器就在这些目录中查找与你所需要的类名称相同的.class文件。(此外,解释器还会去查找某些涉及Java解释器所在位置的标准目录。)

        所以在这里java寻找的就是classpath+package名+类名

 文一原文连接:错误: 编码 GBK 的不可映射字符 (0x80)_凌云-CSDN博客

文二原文连接:JAVA初学:错误: 找不到或无法加载主类 test_ncc1995的博客-CSDN博客

相关文章

暂无评论

暂无评论...