在Linux环境下进行Java开发时,熟练掌握常用命令能显著提升开发效率,以下从环境配置、代码编译、项目管理、调试监控、打包部署等维度详细介绍常用命令。

(图片来源网络,侵删)
环境配置与检查命令
Java开发首先需确保JDK正确安装,可通过以下命令验证:
java -version:检查已安装的Java版本,确认环境变量配置是否生效。javac -version:检查Java编译器版本,需与JDK版本一致。echo $JAVA_HOME:查看JAVA_HOME环境变量路径,通常指向JDK安装目录(如/usr/lib/jvm/java-11-openjdk-amd64)。echo $PATH:检查PATH是否包含$JAVA_HOME/bin,确保java、javac等命令可直接调用。
若需手动配置环境变量,可编辑~/.bashrc或~/.profile文件,添加如下内容:
export JAVA_HOME=/path/to/jdk export PATH=$JAVA_HOME/bin:$PATH
配置完成后执行source ~/.bashrc使生效。
代码编译与运行命令
Java源代码需通过编译器生成字节码,再由虚拟机执行:

(图片来源网络,侵删)
javac HelloWorld.java:编译.java源文件,生成.class字节码文件,若涉及多文件或跨目录编译,需配合-d指定输出目录(如javac -d ./classes *.java)。java HelloWorld:运行编译后的类文件,注意无需加.class后缀,且需在包含该类的目录或通过-cp指定类路径下执行。java -cp ./classes HelloWorld:通过-cp(或-classpath)指定类路径,支持多路径用分隔(如java -cp ./classes:./lib/*.jar HelloWorld)。
项目管理命令
现代Java开发多依赖构建工具,Maven和Gradle是主流选择:
Maven命令
mvn archetype:generate:创建Maven项目骨架,交互式选择项目模板(如maven-archetype-quickstart)。mvn clean compile:清理编译目录(target)并重新编译源代码。mvn test:执行单元测试,默认会运行src/test/java下的测试类。mvn package:打包项目,生成可执行JAR或WAR文件(默认位于target目录)。mvn install:将打包结果安装到本地仓库,供其他项目引用。mvn deploy:部署到远程仓库,用于团队共享。mvn dependency:tree:查看项目依赖树,分析冲突依赖。
Gradle命令
gradle init:初始化Gradle项目,选择项目类型(如java-application)。gradle build:执行完整构建流程(包含编译、测试、打包)。gradle test:运行测试用例,支持筛选特定测试(如gradle test --tests com.example.MyTest)。gradle jar:生成可执行JAR文件,默认位于build/libs目录。gradle bootRun:若为Spring Boot项目,通过此命令启动内嵌Tomcat服务器。
调试与监控命令
开发过程中调试和性能分析至关重要:
jps:查看当前运行的Java进程ID(PID),类似ps命令但仅显示Java进程。jinfo <pid>:查看或修改运行中JVM的参数(如jinfo -flag MaxHeapSize <pid>)。jstack <pid>:生成Java虚拟机线程快照,用于分析线程死锁(如jstack -l <pid>)。jmap <pid>:生成堆转储文件(Heap Dump),分析内存使用情况(如jmap -dump:format=b,file=heapdump.hprof <pid>)。jstat -gc <pid> 1s:实时监控GC情况,每秒输出一次GC统计信息。jdb:Java调试器,可通过jdb -attach <pid>附加到运行中的进程进行断点调试。
打包与部署命令
项目开发完成后需打包为可执行格式:
jar cvf myapp.jar -C ./classes .:使用jar命令打包classes目录下的所有文件到myapp.jar,c表示创建,v显示详细过程,f指定文件名。java -jar myapp.jar:运行可执行JAR文件(需在MANIFEST.MF中指定Main-Class)。nohup java -jar myapp.jar > app.log 2>&1 &:后台运行JAR应用,nohup忽略挂断信号,>输出日志到app.log,2>&1合并错误输出到标准输出,&后台运行。
其他实用命令
find . -name "*.java":递归查找当前目录下所有.java文件,便于批量处理。grep -r "public class" .:在当前目录及子目录中搜索包含"public class"的行,快速定位类定义。scp target/myapp.jar user@remote:/path/to/:通过SCP将JAR文件传输到远程服务器。
以下为常用命令的快速参考表格:

(图片来源网络,侵删)
| 功能分类 | 命令示例 | 说明 |
|---|---|---|
| 环境检查 | java -version |
查看Java版本 |
| 编译 | javac -d ./classes HelloWorld.java |
编译并输出到指定目录 |
| 运行 | java -cp ./classes HelloWorld |
指定类路径运行程序 |
| Maven编译 | mvn clean compile |
清理并编译Maven项目 |
| Maven测试 | mvn test |
执行Maven项目测试 |
| Maven打包 | mvn package |
打包为JAR/WAR文件 |
| 查看Java进程 | jps |
列出当前Java进程ID |
| 线程快照 | jstack -l <pid> |
分析线程死锁 |
| 堆转储 | jmap -dump:format=b,file=heap.hprof <pid> |
生成内存堆转储文件 |
| 后台运行 | nohup java -jar app.jar & |
后台运行并记录日志 |
相关问答FAQs
Q1: Linux下运行Java程序时提示“错误:找不到或无法加载主类”,如何解决?
A: 该问题通常由类路径配置错误导致,可尝试以下方法:
- 确认当前目录是否包含主类文件,或使用
-cp明确指定类路径(如java -cp /path/to/classes:/path/to/libs/* MainClass)。 - 检查包名与目录结构是否匹配,例如包名为
com.example时,主类文件应在com/example/子目录下。 - 若为可执行JAR,确保
MANIFEST.MF中正确指定了Main-Class属性,且JAR文件未被损坏。
Q2: 如何查看Java程序运行时的内存占用情况?
A: 可通过以下命令监控内存使用:
jps查看进程PID,再使用jstat -gcutil <pid> 1s实时查看GC和内存使用率。- 使用
jmap -heap <pid>查看堆内存配置(如新生代、老年代大小)。 - 若需详细内存分析,可通过
jmap -dump:format=b,file=heapdump.hprof <pid>生成堆转储文件,再用MAT(Memory Analyzer Tool)或VisualVM分析内存泄漏问题。
