菜鸟科技网

Linux常用Java开发命令有哪些?

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

Linux常用Java开发命令有哪些?-图1
(图片来源网络,侵删)

环境配置与检查命令

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,确保javajavac等命令可直接调用。

若需手动配置环境变量,可编辑~/.bashrc~/.profile文件,添加如下内容:

export JAVA_HOME=/path/to/jdk
export PATH=$JAVA_HOME/bin:$PATH

配置完成后执行source ~/.bashrc使生效。

代码编译与运行命令

Java源代码需通过编译器生成字节码,再由虚拟机执行:

Linux常用Java开发命令有哪些?-图2
(图片来源网络,侵删)
  • 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.jarc表示创建,v显示详细过程,f指定文件名。
  • java -jar myapp.jar:运行可执行JAR文件(需在MANIFEST.MF中指定Main-Class)。
  • nohup java -jar myapp.jar > app.log 2>&1 &:后台运行JAR应用,nohup忽略挂断信号,>输出日志到app.log2>&1合并错误输出到标准输出,&后台运行。

其他实用命令

  • find . -name "*.java":递归查找当前目录下所有.java文件,便于批量处理。
  • grep -r "public class" .:在当前目录及子目录中搜索包含"public class"的行,快速定位类定义。
  • scp target/myapp.jar user@remote:/path/to/:通过SCP将JAR文件传输到远程服务器。

以下为常用命令的快速参考表格:

Linux常用Java开发命令有哪些?-图3
(图片来源网络,侵删)
功能分类 命令示例 说明
环境检查 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: 该问题通常由类路径配置错误导致,可尝试以下方法:

  1. 确认当前目录是否包含主类文件,或使用-cp明确指定类路径(如java -cp /path/to/classes:/path/to/libs/* MainClass)。
  2. 检查包名与目录结构是否匹配,例如包名为com.example时,主类文件应在com/example/子目录下。
  3. 若为可执行JAR,确保MANIFEST.MF中正确指定了Main-Class属性,且JAR文件未被损坏。

Q2: 如何查看Java程序运行时的内存占用情况?
A: 可通过以下命令监控内存使用:

  1. jps查看进程PID,再使用jstat -gcutil <pid> 1s实时查看GC和内存使用率。
  2. 使用jmap -heap <pid>查看堆内存配置(如新生代、老年代大小)。
  3. 若需详细内存分析,可通过jmap -dump:format=b,file=heapdump.hprof <pid>生成堆转储文件,再用MAT(Memory Analyzer Tool)或VisualVM分析内存泄漏问题。
分享:
扫描分享到社交APP
上一篇
下一篇