前置条件准备
✅ 安装JDK(Java Development Kit)
必须确保系统中已安装JDK而非仅JRE,可通过访问Oracle官网或OpenJDK下载对应操作系统版本的安装包,完成安装后,默认会包含javac
(编译器)、java
(解释器)等核心工具。
📌 验证安装成功:在终端输入
java -version
和javac -help
,若显示版本号与帮助信息则说明路径已正确配置。
🔧 设置环境变量
- Windows系统
- 右键“此电脑”→属性→高级系统设置→环境变量;
新建系统变量JAVA_HOME
,值为JDK安装目录(如C:Program FilesJavajdk-21
);
编辑Path变量,追加%JAVA_HOME%bin
。
- 右键“此电脑”→属性→高级系统设置→环境变量;
- Linux/macOS系统
打开终端配置文件(~/.bashrc
,~/.zshrc
等),添加以下两行并生效:export JAVA_HOME=/usr/local/jdk-21 export PATH=$JAVA_HOME/bin:$PATH
执行
source ~/.bashrc
使配置立即生效。
基础操作流程
✍️ 步骤1:编写源代码文件
创建一个名为 HelloWorld.java
的文件,内容如下:
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello from command line!"); } }
⚠️ 注意命名规范:文件名必须与公共类的类名完全一致(区分大小写)。
⚙️ 步骤2:使用javac编译字节码
打开命令提示符/终端,导航至源码所在目录,执行编译命令:
javac HelloWorld.java
成功时会生成无扩展名的 .class
文件(本例中为 HelloWorld.class
),若报错则需检查语法错误或拼写问题。
🚀 步骤3:通过java命令运行程序
直接运行生成的字节码文件:
java HelloWorld # 不需要写.class后缀
此时控制台将输出 “Hello from command line!”,如果提示找不到主类,请确认是否定义了正确的 main
方法。
高级用法与参数解析
场景需求 | 命令示例 | 作用说明 |
---|---|---|
指定外部类路径依赖 | java -cp lib/some-library.jar MyApp |
加载第三方JAR包中的资源 |
开启调试模式 | java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=:8000 |
配合IDE进行远程调试 |
设置堆内存大小限制 | java -Xmx512m -Xms256m MainClass |
最大堆512MB,初始分配256MB |
禁用断言优化 | java -da MyTest |
启用所有断言语句 |
打印详细垃圾回收日志 | java -verbose:gc Application |
监控GC行为用于性能调优 |
模块化项目支持(JPMS) | java --module-path mods/ --add-modules com.example.mod |
Java 9+模块系统支持 |
💡 技巧补充
- 通配符批量处理:可用
java .class
同时运行多个主类(前提是只有一个包含main方法的有效入口)。 - 包结构下的执行:若代码位于子目录如
src/com/company/Tool.java
,则需要通过全限定名调用:java com.company.Tool
。 - 跨平台兼容性:由于JVM的存在,上述命令在Windows、Linux、macOS均可通用。
典型错误排查手册
错误现象 | 可能原因及解决方案 |
---|---|
'javac'不是内部或外部命令 |
❌ 未正确配置PATH环境变量 → 检查JAVA_HOME指向真实JDK目录,并将%JAVA_HOME%bin加入Path |
找不到主类某某 |
❌ 类名拼写错误/大小写不匹配 → 核对public class声明与文件名是否一致 |
无法解析符号某某 |
❌ 缺少依赖库 → 使用-cp参数显式指定外部JAR路径 |
OutOfMemoryError |
❌ JVM内存不足 → 调整-Xmx参数增大堆空间限制 |
UnsupportedClassVersionError |
❌ 用高版本JDK编译后在低版本JVM运行 → 确保目标平台的JDK版本≥编译所用版本 |
实战案例演示
假设我们要构建一个带用户输入的功能:
- 修改源代码增加交互逻辑:
import java.util.Scanner; public class InteractiveApp { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("Enter your name: "); String name = scanner.nextLine(); System.out.printf("Welcome %s!%n", name); } }
- 执行完整工作流:
# 编译阶段 javac InteractiveApp.java # 运行阶段(支持中文输入) java InteractiveApp
输入任意文本后回车,即可看到个性化欢迎语。
FAQs
Q1: 如果已经安装了多个版本的JDK,如何切换使用的Java版本?
A: Windows可通过修改环境变量中的JAVA_HOME路径实现版本切换;Linux/macOS推荐使用update-alternatives
工具管理多版本,例如Ubuntu系统执行:
sudo update-alternatives --config java # 选择默认java命令软链接 sudo update-alternatives --config javac # 选择默认javac编译器
选择对应优先级序号即可快速切换全局默认版本。
Q2: 为什么有时候需要手动指定类路径(-cp)?什么时候必须这样做?
A: 当项目依赖外部JAR包或存在非标准目录结构的类文件时,必须通过-cp显式声明,例如运行Spring Boot应用时通常需要指定启动器的JAR位置:
java -cp target/libs/.jar;target/classes com.example.MainApplication
该参数告诉JVM去哪里查找用户自定义的类和资源文件,默认情况下仅搜索当前工作目录及系统
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/109770.html