在Windows操作系统中,命令提示符(CMD)是执行系统命令和运行程序的重要工具,对于Java开发者而言,掌握在CMD中运行Java程序是基础技能,这不仅有助于理解Java程序的编译与执行流程,也能在没有图形化IDE的环境下快速验证代码,本文将从环境配置、代码编写、编译运行、进阶操作及常见问题五个方面,详细讲解如何在CMD中运行Java程序。

Java开发环境配置:运行程序的前提
在CMD中运行Java程序,首先需要确保Java开发工具包(JDK)已正确安装并配置环境变量,JDK是Java程序开发的核心工具包,包含编译器(javac)、虚拟机(java)等关键组件。
安装JDK
访问Oracle官网或OpenJDK官网,下载与操作系统匹配的JDK版本(建议选择LTS长期支持版本,如JDK 17或11),下载后运行安装程序,建议安装在默认路径(如C:\Program Files\Java\jdk-17),避免路径中包含中文或空格。
配置环境变量
环境变量是操作系统用来定位程序和工具的配置,配置JAVA_HOME和Path是关键步骤:
- 设置JAVA_HOME:右键“此电脑”→“属性”→“高级系统设置”→“环境变量”,在“系统变量”中点击“新建”,变量名输入
JAVA_HOME,变量值输入JDK的安装路径(如C:\Program Files\Java\jdk-17)。 - 配置Path变量:在“系统变量”中找到
Path变量,点击“编辑”,新建两条路径:%JAVA_HOME%\bin和%JAVA_HOME%\jre\bin。%JAVA_HOME%会自动替换为JAVA_HOME的值,确保CMD能找到javac.exe(编译器)和java.exe(虚拟机)。
验证配置
打开CMD,输入以下命令验证环境是否配置成功:
java -version # 查看Java版本,显示JDK版本信息即成功 javac -version # 查看编译器版本,显示javac版本信息即成功
若提示“不是内部或外部命令”,说明Path配置错误,需检查路径是否正确添加。
编写Java程序:从代码到文件
环境配置完成后,需要编写Java源代码并保存为.java文件,以最经典的“Hello World”程序为例,讲解编写与保存步骤。
创建源文件
使用记事本、VS Code等文本编辑器,编写以下代码:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
保存文件
- 文件名规范:文件名必须与
public class后的类名完全一致(包括大小写),此处应保存为HelloWorld.java。 - 保存路径:建议保存在无中文、无空格的路径下(如
D:\JavaCode),便于后续通过CMD定位文件。
注意事项
- Java代码区分大小写,
public、class等关键字不能写错。 - 每个Java文件只能有一个
public class,且类名必须与文件名一致。
编译与运行:从源码到结果
Java程序是“先编译,后运行”的语言,需通过编译器将.java源文件转换为.class字节码文件,再通过Java虚拟机(JVM)执行字节码。
打开CMD并定位文件
- 按
Win+R输入cmd打开命令提示符。 - 使用
cd命令切换到.java文件所在目录,文件保存在D:\JavaCode,则输入:d: # 切换到D盘 cd JavaCode # 进入JavaCode目录
- 输入
dir命令查看当前目录文件,确认HelloWorld.java存在。
编译源文件(生成字节码)
使用javac命令编译.java文件,语法为javac 文件名.java:

javac HelloWorld.java
编译成功后,当前目录会生成HelloWorld.class文件(字节码文件),可通过dir命令查看。
运行程序(执行字节码)
使用java命令运行.class文件,语法为java 类名(注意:不加.class扩展名):
java HelloWorld
若输出Hello, World!,说明程序运行成功。
常见编译错误
- 错误:找不到符号:通常因类名与文件名不一致、拼写错误或缺少依赖导致,检查代码和文件名。
- 错误:文件不存在:因
cd命令路径错误或文件名写错,确认当前目录和文件名。
进阶操作:包管理与参数传递
实际开发中,Java程序常涉及包管理(避免类名冲突)和参数传递(动态输入数据),以下介绍CMD中的操作方法。
带包的Java程序
Java使用package关键字定义包,规范类的存放路径,定义包com.example,代码修改为:
package com.example;
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, 包管理!");
}
}
编译带包的文件
需使用-d参数指定输出目录,表示当前目录:
javac -d . HelloWorld.java
编译后,会生成目录结构com/example/HelloWorld.class(与包名对应)。
运行带包的程序
需指定完整的包名+类名:
java com.example.HelloWorld
传递程序参数
Java程序的main方法可接收String[] args参数,用于接收CMD传入的参数,修改代码:

public class ArgsDemo {
public static void main(String[] args) {
System.out.println("参数个数: " + args.length);
for (int i = 0; i < args.length; i++) {
System.out.println("参数" + (i+1) + ": " + args[i]);
}
}
}
编译后,运行时传入参数(参数间用空格分隔):
java ArgsDemo 参数1 参数2 123
输出结果为:
参数个数: 3
参数1: 参数1
参数2: 参数2
参数3: 123
常见问题与解决方案
在CMD中运行Java程序时,常因环境配置、路径错误等问题导致失败,以下是典型问题及解决方法。
问题:“’javac’不是内部或外部命令…”
原因:Path变量未配置或配置错误,导致系统无法找到javac.exe。
解决:检查Path变量是否包含%JAVA_HOME%\bin,若未添加,需重新配置并重启CMD。
问题:“ClassNotFoundException”
原因:运行时JVM未找到指定的.class文件,可能因类名错误、类路径未指定或包名未写全。
解决:
- 确认类名与文件名一致(含包名)。
- 使用
-classpath(或-cp)指定类路径,如java -cp . com.example.HelloWorld(表示当前目录)。
问题:“Could not find or load main class”
原因:常见于带包的程序未指定完整包名,或.class文件不在当前目录。
解决:
- 运行时输入完整包名+类名(如
java com.example.HelloWorld)。 - 检查
-d编译参数是否正确生成目录结构。
问题:中文乱码
原因:CMD编码格式与Java源文件编码不一致(如源文件为UTF-8,CMD为GBK)。
解决:
- 修改CMD编码:右键CMD标题栏→“属性”→“选项”,将“当前代码页”改为“UTF-8”。
- 或在Java代码中指定编码(如
System.out.println(new String("你好".getBytes("UTF-8"), "UTF-8"));)。
在CMD中运行Java程序是Java开发的基础技能,核心步骤包括:配置JDK环境变量→编写并保存.java文件→通过javac编译→通过java运行,掌握包管理、参数传递及常见问题排查方法,能进一步提升操作效率,尽管图形化IDE(如IntelliJ IDEA、Eclipse)提供了更便捷的开发体验,但CMD中的命令操作有助于深入理解Java程序的编译原理和运行机制,为后续学习打下坚实基础。

















