Ubuntu下Java的编译与调试指南
一 环境准备
sudo apt update && sudo apt install openjdk-11-jdk(或 sudo apt install default-jdk)java -version、javac -versionsudo update-alternatives --config java 查看所选 Java 路径echo 'export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64' >> ~/.bashrcsource ~/.bashrc,验证:echo $JAVA_HOME二 命令行编译与运行
javac HelloWorld.java(生成 HelloWorld.class)java HelloWorld(注意:运行时不要加 .class 后缀)javac File1.java File2.java File3.javajavac -d out -cp ".:/path/to/lib.jar" HelloWorld.javajava -cp ".:/path/to/lib.jar:out" HelloWorldjavac HelloWorld.java && java HelloWorld。三 命令行调试 JDWP 与 JDB
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=*:5005 -cp . HelloWorldtransport=dt_socket 使用套接字传输server=y 作为调试服务器等待连接suspend=y 启动即挂起(改为 n 则直接运行,随时可连)address=*:5005 监听 5005 端口(所有地址);远程调试请开放防火墙端口jdb -attach localhost:5005jdb HelloWorldstop in HelloWorld.main 或 stop at HelloWorld:行号runstep(步入)、next(步过)contprint 变量名where、threads四 使用 IDE 进行图形化调试
五 常见问题与进阶排查
java -version 与 javac -version;确保运行时类路径包含你的 .class 输出目录与依赖 JARjava -cp ".:lib/*:out" HelloWorldjstack <PID> 查看线程状态与锁竞争jstat -gcutil <PID> 1000 观察 Full GC 频率jmap -dump:format=b,file=heap.hprof <PID> 后用 MAT/VisualVM 分析sudo update-alternatives --config java 选择系统默认 java,保持与 javac 一致