You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何不依赖Java9跨平台获取运行中Java应用自身的PID?

跨平台获取Java进程PID(Java 9以下兼容方案)

方案1:无第三方依赖实现(推荐,Java 6+全平台支持)

该方案基于JDK自带的java.lang.managementAPI,Java 5及以上版本原生支持,无需引入任何额外依赖,适配Windows、Linux、macOS全平台,主流JVM(HotSpot、OpenJDK、Oracle JDK、IBM J9等)均兼容。

import java.io.FileWriter;
import java.io.IOException;
import java.lang.management.ManagementFactory;

class MyApp 
{
    public static void main(String[] args) 
    {
        // 获取PID
        String runtimeName = ManagementFactory.getRuntimeMXBean().getName();
        long pid = Long.parseLong(runtimeName.split("@")[0]);
        
        // 保存PID到文件,可自行替换为实际需要的文件路径
        String pidFilePath = "./myapp.pid";
        try (FileWriter writer = new FileWriter(pidFilePath)) {
            writer.write(String.valueOf(pid));
            System.out.println("PID已写入文件: " + pidFilePath + ", PID值为: " + pid);
        } catch (IOException e) {
            e.printStackTrace();
        }
        
        // 原有业务逻辑
        // Do stuff
    }
}

注意:极少数小众JVM可能不遵循PID@主机名的返回格式,若生产环境使用非常见JVM,可选用方案2。

方案2:JNA实现(100%兼容所有JVM,需第三方依赖)

如果需要完全规避字符串解析的风险,可以使用JNA(Java Native Access)库的API直接获取PID,跨平台适配逻辑由JNA底层实现:
首先在Maven的pom.xml中引入依赖:

<dependency>
    <groupId>net.java.dev.jna</groupId>
    <artifactId>jna-platform</artifactId>
    <version>5.13.0</version>
</dependency>

代码示例:

import com.sun.jna.Platform;
import java.io.FileWriter;
import java.io.IOException;

class MyApp 
{
    public static void main(String[] args) 
    {
        // 直接获取PID
        long pid = Platform.getPID();
        
        // 保存到文件
        String pidFilePath = "./myapp.pid";
        try (FileWriter writer = new FileWriter(pidFilePath)) {
            writer.write(String.valueOf(pid));
        } catch (IOException e) {
            e.printStackTrace();
        }
        
        // 原有业务逻辑
        // Do stuff
    }
}

内容的提问来源于stack exchange,提问作者user5123481566

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 13:48:03