怎么用cmd运行java
- 后端开发
- 2025-08-03
- 6
安装Java开发工具包(JDK)
- 下载JDK
访问Oracle官网或其他可信源获取适合操作系统的JDK安装包(如Windows x64版本),注意区分JDK与JRE的不同——JDK包含编译器和调试工具,而JRE仅用于运行已编译的程序。
- 安装流程
双击下载的安装程序,默认路径通常为 C:Program FilesJavajdk-版本号,安装过程中可保留所有组件以确保功能完整。
- 验证安装结果
打开CMD并输入命令 java -version,若显示版本信息(java version ‘11.0.2’”),则说明安装成功;否则需检查路径或重新安装。
配置环境变量
正确设置环境变量是CMD识别Java命令的关键,以下是具体操作:
| 变量名 | 变量值示例 | 作用说明 |
|————–|——————————–|————————————————————————–|
| JAVA_HOME | C:Program FilesJavajdk-11.0.2 | 指向JDK根目录,供其他工具引用 |
| Path | %JAVA_HOME%bin | 将JDK的二进制文件添加到系统搜索路径,使javac和java命令全局可用 |
配置步骤详解
- 进入系统属性窗口
右键点击“此电脑”→选择“属性”→左侧栏点击“高级系统设置”。
- 编辑环境变量
在弹出的对话框中点击“环境变量”,完成以下操作:
- 新建系统变量:变量名为JAVA_HOME,值为JDK的实际安装路径。
- 修改Path变量:选中现有的Path条目后点击“编辑”,新增一项%JAVA_HOME%bin。
- 测试配置有效性
重新打开一个CMD窗口,分别输入javac和java,如果两者均能正常调用(显示帮助文档而非报错),则表明配置成功。
编写Java源代码
使用任意文本编辑器创建一个简单的Java程序,用记事本编写以下内容并保存为HelloWorld.java:
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } }
️ 注意事项:文件名必须与公共类的类名完全一致(区分大小写),且扩展名为.java。
通过CMD编译和运行程序
步骤1:定位到代码所在目录
假设文件存放在E:ProjectsJavaTest目录下,可通过以下命令切换路径:
若路径含空格或特殊字符,建议用引号包裹,如cd "C:My Project"。
步骤2:编译源代码
执行命令:
javac HelloWorld.java
该命令会生成对应的字节码文件HelloWorld.class,若无错误提示,说明编译成功;若报错则需检查语法问题。

步骤3:运行程序
直接输入主类名(无需带.class后缀):
java HelloWorld
此时应看到输出结果Hello, World!。
高级用法扩展
指定类路径(Classpath)处理依赖库
当项目依赖外部JAR文件时,需通过-cp或-classpath参数显式声明。
java -cp lib/;mainpkg/ MyApp
其中lib/表示加载目录下的所有JAR包,分号()用于分隔多个路径(Windows系统中)。

传递命令行参数给主方法
在运行程序时添加额外参数,这些参数会被存入字符串数组args[]中供程序使用,示例:
java HelloWorld arg1 arg2 arg3
对应Java代码中可通过args[0]获取第一个参数的值。
多文件批量编译技巧
若有多个源文件需要同时编译,可以使用通配符或脚本自动化处理。
javac .java # 编译当前目录下所有Java文件
或者结合Shell脚本实现更复杂的构建逻辑。
常见问题排查
| 现象 | 可能原因及解决方案 |
|---|---|
| javac不是内部命令 | 环境变量未正确配置,检查Path中是否包含%JAVA_HOME%bin |
| 找不到符号错误 | 拼写错误、包结构不匹配或未导入必要的类库 |
| 运行时找不到主类 | 确保使用的类名与文件名一致,且当前目录包含目标.class文件 |
FAQs
Q1: CMD中无法识别javac命令怎么办?
解答:这是由于环境变量未正确配置导致的,请确认已完成上述第二步中的JAVA_HOME和Path设置,并重启CMD终端使更改生效,可以通过echo %PATH%查看当前路径是否包含JDK的bin目录。
Q2: 如何让Java程序接收用户输入的数据?
解答:使用标准输入流即可实现交互式数据读取,在代码中加入Scanner scanner = new Scanner(System.in); String input = scanner.nextLine();,然后在CMD运行时直接键
