linuxjava命令详解
linuxjava命令详解详细介绍
在 Linux 系统中,java 命令用于启动 Java 虚拟机(JVM)并运行 Java 程序。以下是对 java 命令的详细解析,包括常用选项、参数及示例:
一、命令格式
bash
options class args.options jarfile args.
class:要运行的类名(需包含完整包路径,若在当前目录则直接类名)。jarfile:可执行 JAR 包的路径(需在MANIFEST.MF中指定主类)。args:传递给主类main方法的参数。
二、常用选项(Options)
1. 基础选项
| 选项 | 说明 |
|---|---|
-version |
显示 Java 版本信息,不运行程序。 |
-help |
显示简短帮助信息。 |
-cp / -classpath |
指定类路径(Class Path),用于查找类文件,多个路径用 : 分隔(Linux)。 |
-Dproperty=value |
设置系统属性(如 java.util.Properties 中的键值对),例如 -Dfile.encoding=UTF-8。 |
示例:
bash
./lib/*:./classes com.example.MyClassadmin com.example.MyClass
2. JVM 内存配置
| 选项 | 说明 |
|---|---|
-Xmxsize |
设置 JVM 最大堆内存(如 1024m、2g)。 |
-Xmsize |
设置 JVM 初始堆内存(默认通常为 -Xmx 的 1/64,最小值 1MB)。 |
-Xsssize |
设置线程栈大小(如 256k,默认随操作系统和架构不同)。 |
-XX:MaxMetaspaceSize=size |
设置元空间(Metaspace)最大大小(Java 8+,替代永久代 PermGen)。 |
示例:
bash
512m com.example.MyClass
3. 垃圾回收(GC)相关
| 选项 | 说明 |
|---|---|
-XX:+UseG1GC |
使用 G1 垃圾收集器(Java 9+ 默认,Java 8 需显式启用)。 |
-XX:+PrintGC |
打印 GC 简要信息(等价于 -verbose:gc)。 |
-XX:+PrintGCDetails |
打印 GC 详细信息。 |
-XX:GCTimeRatio=n |
设置 GC 时间占比(1/(n+1),默认 99,即 GC 时间不超过 1%)。 |
示例:
bash
com.example.MyClass
4. 调试与监控
| 选项 | 说明 |
|---|---|
-agentlib:jdwp=options |
启用 JDWP 调试器,用于远程调试(如 transport=dt_socket,server=y,suspend=n,port=5005)。 |
-verbose:class |
输出类加载详细信息。 |
-ea / -enableassertions |
启用断言(默认关闭,生产环境慎用)。 |
示例:
bash
transportdt_socket,servery,port com.example.MyClass
5. 其他常用选项
| 选项 | 说明 |
|---|---|
-jar |
运行可执行 JAR 包(需 MANIFEST.MF 中指定 Main-Class)。 |
-module / -m |
运行模块化程序(Java 9+,指定模块名和主类,如 java -m my.module/com.example.MyClass)。 |
-version:module |
显示模块版本信息。 |
三、运行 Java 程序的两种方式
1. 直接运行类文件
bash
javac com/example/MyClass.java
.:./lib/dependency.jar com.example.MyClass arg1 arg2
.表示当前目录,dependency.jar是依赖的 JAR 包。
2. 运行可执行 JAR 包
bash
jar cvfm myapp.jar MANIFEST.MF com/example/MyClass.class lib/*.jar
myapp.jar arg1 arg2
四、常见错误与处理
ClassNotFoundException- 原因:类路径(
-cp)未正确指定。 - 解决:检查类路径是否包含类文件或 JAR 包,路径分隔符是否正确(Linux 用
:,Windows 用;)。
- 原因:类路径(
NoClassDefFoundError- 原因:运行时依赖的类在编译时存在,但运行时缺失。
- 解决:确保依赖的 JAR 包在类路径中。
- 内存溢出(
OutOfMemoryError)- 解决:通过
-Xmx和-Xms调整堆内存大小,或优化代码避免内存泄漏。
- 解决:通过
五、更多帮助
- 完整帮助:运行
java -help或java -X查看高级选项。 - 官方文档:Java Documentation。
通过合理使用 java 命令的选项,可以优化 JVM 性能、调试程序或配置运行环境,满足不同场景的需求。