在 CentOS 上编译并调试 Java 代码,通常分为 编译、运行、调试 三个阶段。下面按常见场景给你一套完整、实用的做法。
# 查看是否已安装
java -version
# 如果没有,安装 OpenJDK
sudo yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel
调试 必须安装 devel 包(包含 jdb 等工具)
// Hello.java
public class Hello {
public static void main(String[] args) {
int a = 10;
int b = 20;
int c = add(a, b);
System.out.println(c);
}
public static int add(int x, int y) {
return x + y;
}
}
javac -g Hello.java
✅ -g 参数非常重要,会生成:
否则调试时看不到变量和行号。
JDB 是 JDK 自带的命令行调试器,适合服务器环境。
jdb Hello
或使用:
jdb -classpath . Hello
stop at Hello:5
或方法断点:
stop in Hello.add
run
step # 进入方法
next # 不进入方法
print a
locals
cont
where
$ jdb Hello
> stop at Hello:5
> run
> print a
> next
> step
> cont
如果你在 CentOS 上运行 Java 程序,想在本地或服务器上调试:
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005 Hello
参数说明:
| 参数 | 含义 |
|---|---|
| suspend=y | 启动后暂停,等待调试器 |
| address=5005 | 调试端口 |
| server=y | 作为调试服务器 |
jdb -attach 5005
✅ 这是企业中最常用的调试方式
-gjavac -g *.java
jps
jstack <pid>
jmap -histo <pid>
sudo yum install java-1.8.0-openjdk-devel
✅ 忘记加 -g
✅ 可以用远程调试,但 不要 suspend=y 在线上
| 场景 | 推荐方式 |
|---|---|
| 本地调试 | javac -g + jdb |
| 服务器调试 | 远程调试(IDE) |
| 线上问题 | jstack / jmap + 日志 |
如果你愿意,我可以:
你现在用的是 普通 Java 项目还是 Web 项目?