在 CentOS 上编译 Java 并生成 Jar 包,通常按下面步骤来(以 OpenJDK 8/11/17 为例,适用于大多数情况)。
java -version
javac -version
yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel
dnf install -y java-17-openjdk java-17-openjdk-devel
⚠️ 一定要安装
devel包,否则没有javac
// Hello.java
public class Hello {
public static void main(String[] args) {
System.out.println("Hello CentOS");
}
}
javac Hello.java
生成:
Hello.class
jar cf hello.jar Hello.class
jar cfm hello.jar MANIFEST.MF Hello.class
MANIFEST.MF 示例
Main-Class: Hello
⚠️ 注意:
.classjava -jar hello.jar
src/
└── com/
└── example/
└── App.java
javac -d out src/com/example/App.java
jar cf app.jar -C out .
jar cfm app.jar MANIFEST.MF -C out .
MANIFEST.MF
Main-Class: com.example.App
dnf install -y maven
mvn archetype:generate \
-DgroupId=com.example \
-DartifactId=myapp \
-DarchetypeArtifactId=maven-archetype-quickstart \
-DinteractiveMode=false
cd myapp
mvn package
生成的 Jar:
target/myapp-1.0-SNAPSHOT.jar
java -jar target/myapp-1.0-SNAPSHOT.jar
dnf install -y gradle
gradle build
jar 不是命令yum install -y java-1.8.0-openjdk-devel
no main manifest attributeMain-Class 未指定
bad class fileJava 版本不一致(编译和运行版本不同)
| 场景 | 推荐方式 |
|---|---|
| 学习 / 简单测试 | javac + jar |
| 正式项目 | Maven / Gradle |
| CentOS 服务器 | OpenJDK |
如果你愿意,可以告诉我:
我可以给你 完整的实战示例。