启动JAVA

启动JAVA

直接类启动

# 当你不指定 -cp 时,JVM 使用:
java com.example.Main
# 等效于:只包含当前目录,不包含其他 JAR!
java -cp . com.example.Main

JAR 包启动

java -jar app.jar 执行的是 JAR 包中 META-INF/MANIFEST.MF 文件里指定的 Main-Class

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Built-By: Game-Dev-Team
Created-By: Apache Maven 3.8.1
Build-Jdk: 11.0.12
Specification-Title: Game Server Application
Implementation-Title: game-server
Implementation-Version: 1.0.0
Implementation-Vendor-Id: com.test.mu
Main-Class: com.test.mu.start.GameStartup # 执行 GameStartup.main() 方法
Class-Path: lib/network-1.2.0.jar lib/database-2.1.0.jar lib/utils-0.9.0.jar

META-INF/MANIFEST.MF 通常是打包工具自动生成的!

如果不做任何配置,构建工具会生成一个基本的 MANIFEST.MF:

Manifest-Version: 1.0
Created-By: 11.0.12 (Oracle Corporation)

但这样的 JAR 不能使用 java -jar 运行,因为没有 Main-Class

java -jar app.jar
    ↓
JVM 读取 META-INF/MANIFEST.MF
    ↓
找到 Main-Class: com.test.mu.start.GameStartup  
    ↓
加载并执行 GameStartup.main(String[] args)

类路径

java -cp "lib/*:." com.mycompany.Main

## java
# Java 运行时启动命令

## -cp "lib/*:."
# -cp = classpath 的缩写,指定类路径

## "lib/*" = lib 目录下的所有 JAR 文件

## : = 类路径分隔符(Linux/Unix 系统)
## :. = 当前目录(包含编译的 .class 文件)

## Main 要执行的主类名(不需要 .class 后缀)  例如:com.mycompany.Main

例子

java -Xmx512m com.test.mu.start.GameStartup ${ROOT}/conf/config.properties > ${ROOT}/log.txt 2>&1 &
# 分解来看:
java \                          # 启动JVM
  -Xmx512m \                    # 分配最大512MB堆内存
  com.test.mu.start.GameStartup \ # 执行这个主类
  ${ROOT}/conf/config.properties \ # 配置文件路径参数
  
  > ${ROOT}/log.txt \           # 标准输出重定向到日志文件
  2>&1 \                        # 标准错误也重定向到同一文件
  &                             # 后台运行
  
#java com.test.mu.start.GameStartup = 执行 GameStartup.main() 方法
# 后面的参数 ${ROOT}/conf/config.properties = 传递给 main 方法的 String[] args 参数

启动方式总结

Java 应用的启动方式非常丰富:

启动方式 适用场景 示例命令
直接类 简单应用 java com.example.Main
JAR 包 标准部署 java -jar app.jar
类路径 复杂依赖 java -cp "lib/*:." Main
模块化 Java 9+ java --module-path mods -m module/main
Spring Boot 微服务 java -jar app.jar --profile=prod
调试模式 开发调试 java -agentlib:jdwp ... -jar app.jar
性能调优 生产环境 java -Xmx2g -XX:+UseG1GC -jar app.jar
Docker 容器化 docker run java -jar app.jar
posted @ 2025-10-20 17:05  deyang  阅读(6)  评论(0)    收藏  举报