首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

CentOS 環境下 Java 安裝驗證與 JAR 包運行指南

     編輯:Java 相關知識

安裝驗證步驟

1. 檢查 Java 版本

[root@dabu.info ~]# java -version
openjdk version "1.8.0_342"
OpenJDK Runtime Environment (build 1.8.0_342-b07)
OpenJDK 64-Bit Server VM (build 25.342-b07, mixed mode)

2. 編寫測試程序

[root@dabu.info ~]# cat > HelloWorld.java << 'EOF'
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World! This is a test code by nixCraft!");
    }
}
EOF

3. 編譯與運行

[root@dabu.info ~]# javac HelloWorld.java
[root@dabu.info ~]# java HelloWorld
Hello, World! This is a test code by nixCraft!

JAR 包運行完整指南

基本語法

java -jar <jar-file> [args...]

常用場景示例

場景命令示例說明
當前目錄運行java -jar app.jar需包含 Main-Class 清單屬性
指定絕對路徑java -jar /opt/apps/myapp.jar生產環境推薦
傳遞程序參數java -jar app.jar arg1 arg2args[0]=arg1, args[1]=arg2
指定 JVM 參數java -Xms512m -Xmx2g -jar app.jar堆內存設置
指定配置文件java -jar app.jar --spring.config.location=file:/etc/app.ymlSpring Boot 外部配置
後台運行nohup java -jar app.jar > app.log 2>&1 &脫離終端運行
系統服務管理systemctl start myapp需編寫 .service 文件

JAR 包構建要求

可執行 JAR 必須在 META-INF/MANIFEST.MF 中包含:

Manifest-Version: 1.0
Main-Class: com.example.MainClass
Class-Path: lib/dependency1.jar lib/dependency2.jar

Maven 構建配置

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>3.4.1</version>
    <executions>
        <execution>
            <phase>package</phase>
            <goals><goal>shade</goal></goals>
            <configuration>
                <transformers>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                        <mainClass>com.example.MainClass</mainClass>
                    </transformer>
                </transformers>
            </configuration>
        </execution>
    </executions>
</plugin>

Gradle 構建配置

jar {
    manifest {
        attributes 'Main-Class': 'com.example.MainClass'
    }
    from { configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } }
}

常見問題排查

錯誤現象可能原因解決方案
no main manifest attributeMANIFEST 缺少 Main-Class配置打包插件指定入口類
ClassNotFoundException依賴未打包/Class-Path 錯誤用 Shade/FatJar 打包所有依賴
UnsupportedClassVersionErrorJDK 版本不匹配 (如用 JDK 11 運行 JDK 17 編譯的類)統一編譯/運行 JDK 版本
端口衝突默認 8080 被佔用配置 server.port 或 -Dserver.port=8081
權限不足綁定 1024 以下端口需 root用高端口或 setcap/authbind
內存溢出堆太小/內存洩漏調大 -Xmx、分析 Heap Dump

生產環境部署最佳實踐

  1. 專用用戶:創建 appuser 運行,禁用 root
  2. 目錄規範:/opt/app/{jar,logs,config,data}
  3. systemd 服務:編寫 /etc/systemd/system/app.service
  4. 日誌切割:Logback 配置 RollingFileAppender + logrotate
  5. 健康檢查:Spring Boot Actuator /actuator/health
  6. JVM 調優:-XX:+UseG1GC -XX:MaxGCPauseMillis=200 -Xms2g -Xmx2g
  7. 安全加固:禁用 JMX 遠程、啟用 SSL、定期更新基礎鏡像

systemd 服務模板

[Unit]
Description=My Java Application
After=network.target

[Service]
Type=simple
User=appuser
WorkingDirectory=/opt/app
ExecStart=/usr/bin/java -Xms2g -Xmx2g -XX:+UseG1GC -jar app.jar
Restart=on-failure
RestartSec=10
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target

啟用:systemctl daemon-reload && systemctl enable --now app

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved