CMD命令窗口运行java文件编码GBK的不可映射字符,和运行.class文件报错:找不到或无法加载主类

本文总结了在CMD窗口中运行Java文件时可能遇到的常见问题,包括编码错误、找不到主类等,并提供了详细的解决步骤,如使用-encoding指令指定编码格式、检查并删除package声明、正确设置环境变量等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先说明一下, 大部分问题都是在网上找的某些大佬给出的解决方法,但我都试过了却还是不行, 后来自己找到了自己的问题所在, 由此才想把cmd窗口运行java文件时有可能会遇到的常见问题作出以下总结:

1.输入: javac 类名.java时,报编码不可映射问题

命令:javac GuessingGame.java

说明:出现这样的错误,一般是因为代码中含有中文字符,注释中的中文字符也算。由于使用CMD运行java程序的时候,系统默认的编码格式是gbk。而包含中文字符的代码一般是UNICODE格式,所以直接运行含有中文字符的代码就很容易出现编码错误。

1.1解决方法

可以直接使用-encoding指令来为文件指定编码格式。

例如 javac -encoding UTF-8 XXX.java

其中XXX替换为你的java文件名。

解决方法1来源:https://jingyan.baidu.com/article/e3c78d649a56233c4c85f502.html

1.2解决方法

通过系统自带的记事本打开java文件, 点击左上边菜单栏的文件按钮,选择另存为,

然后在另存为界面中,下方保存按钮的左边有个编码选项, 选择ANSI ,更改文件名,

或者换一个文件夹目录存储更改过编码后的文件,再去cmd命令窗口去执行ANSI编码格式的java文件即可

图解↓↓↓:

 

 编译成功!

 

2.编译运行class文件时报错:错误:找不到或无法加载主类

2.1解决方法

其实我认为如果你能运行成功 javac 命令 就说明你的环境变量没问题,

但也不排除某些特殊情况,所以2.1解决方法也是网上给出的比较多的解决方案

1. 配置系统环境变量classpath为 .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar 其中,最开始的"."表示当前目录

2. 如果1配置好了,重新打开cmd运行java命令还是失败,将.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar 复制到用户环境变量下的classpath里。或者执行 java -cp %classpath; 命令。

图片来源:https://blog.youkuaiyun.com/Emon66/article/details/82735385

补充:

* path和classpath的区别

  path配置的是可执行的文件.exe,配置后可以在不同的盘符下访问path路径下的可执行文件
  classpath配置的java的类文件,也就是.class文件

手动补充:

我在某个网页上看到有人在评论中说到:

如果是win10环境,只需要配置path和java_home这俩个变量就可以,classpath不用配置,如果配置了classpath,删除配置,重新打开cmd运行就可以了

解决方法1来源:https://www.baidu.com/link?url=OR0hzowYb8IK9Po5OY_LezNw9rAr80VIpW1v2W26yUTJi5sfpo_M9wbBcEgOe9dRPXEHHRfqSHKQFa7XGwVUjq&wd=&eqid=9ae2801b00026930000000065d1d5213

2.2解决方法

2.2.1 一般情况下编译的java文件开头第一行都会有package,以便运行时能找到此类,

但在cmd窗口中运行class文件时就不可以加package了,

所以检查你的文件是否有package,有的话就删掉

再通过javac 类名.java 来重新编译生成class文件来运行

其实有package的话也可以运行,只是比较麻烦,我就给个链接,有想试试的就去看看吧

https://blog.youkuaiyun.com/qq_34037046/article/details/77916472

2.2.2 这个应该是很容易就被忽视掉的错误点

运行class文件时,不能加.class后缀

因为在你输入类名时可能会有很多小伙伴习惯性的按Tab键来使文件名补全,

但这个补全是带后缀的,所以这一块比较容易被忽略

2.2.3 要运行的.class文件要和你的.java文件在同一目录下才可以

结束语:大体上常遇到的应该就这几种问题了, 部分问题是直接从其他网页的解决方法如果以上方法都没有解决你的问题,你可以在评论中留言你的问题,我看到了也会帮你找找方法,如果有其他小伙伴看到了说不定就帮你解决了.

另外,我写这篇博客主要是因为自己还是技术新人,听说也好,看到也好,很多人都说养成写博客的习惯对技术方面会有很大的帮助,所以,我就想从一些相对比较简单的问题来着手执行这个行动,争取早日养成这个好习惯,一起加油吧!

<think>好的,用户想了解如何用cmd运行Java的详细步骤。首先,我需要确定用户可能遇到的问题。通常,这问题涉及到环境变量的配置,尤其是JAVA_HOMEPath的设置。用户可能刚接触Java,对命令行不太熟悉,所以步骤需要详细且易懂。 第一步,应该检查Java是否安装正确。用户可能不知道如何验证安装,所以需要指导他们使用java -version命令。如果出现版本信息,说明已安装;如果没有,需要引导他们去下载安装JDK。 接下来,配置环境变量是关键。用户可能不清楚JAVA_HOME的作用,需要解释清楚,并给出具体的设置步骤,比如在系统变量中添加JAVA_HOME,并修改Path变量。这里要注意不同操作系统的路径差异,比如WindowsMac/Linux,但用户问题明确提到cmd,所以可能是在Windows环境下,但最好还是涵盖其他系统的情况。 然后,编写Java程序的部分。需要提醒用户注意文件名的匹配,以及代码中的public static void main方法,这是入口点。用户可能会忽略这一点,导致运行失败。 编译运行阶段,用户可能会混淆javacjava命令。要明确说明javac用于编译,生成.class文件,而java用于执行,不需要扩展名。同时,常见错误如名错误环境变量未生效需要提及,帮助用户排查问题。 最后,示例部分可以增强用户的信心,通过实际代码演示整个过程,确保他们能一步步跟着操作。同时,提醒可能的路径问题,比如在文件所在目录打开cmd,避免路径错误。 整个过程中,要使用简单明了的语言,避免技术术语过多,确保步骤清晰,顺序合理。考虑到用户可能遇到的每一个细节问题,提前给出解决方案,比如环境变量配置后需要重启cmd者如何以管理员身份运行cmd进行安装验证。</think>以下为使用cmd运行Java程序的详细步骤: ### 一、检查Java环境 1. 打开cmd输入: ```cmd java -version ``` - 若显示似$$java version "17.0.2"$$说明环境正常 - 若提示"不是内部命令",需[安装JDK](https://www.oracle.com/java/technologies/downloads/) ### 二、配置环境变量(若未自动配置) 1. 新建系统变量: - 变量名:`JAVA_HOME` - 变量值:`C:\Program Files\Java\jdk-17.0.2`(需改为实际安装路径) 2. 编辑Path变量: - 添加两条记录: ``` %JAVA_HOME%\bin %JAVA_HOME%\jre\bin ``` ### 三、编写测试程序 1. 新建`HelloWorld.java`文件: ```java public class HelloWorld { public static void main(String[] args) { System.out.println("Hello from cmd!"); } } ``` ### 四、编译与运行 1.文件目录打开cmd: ```cmd javac HelloWorld.java # 编译生成HelloWorld.class java HelloWorld # 运行程序(注意不要加.class) ``` ### 五、常见问题排查 1. 编译错误: - `错误: 不到符号` → 检查名与文件名是否一致 - `错误: 编码GBK不可映射字符` → 添加编译参数: ```cmd javac -encoding UTF-8 HelloWorld.java ``` 2. 运行错误: - `不到无法加载` → 检查是否配置了classpath: ```cmd java -cp . HelloWorld ``` ### 六、完整示例演示 假设在D:\MyJava目录中有以下文件结构: ``` └─HelloWorld.java ``` 操作流程: ```cmd D: cd MyJava javac HelloWorld.java java HelloWorld ``` 成功输出:`Hello from cmd!` > 提示:可通过在文件资源管理器地址栏直接输入`cmd`快速打开当前目录的cmd窗口
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值