From 2b58a59e6cd3276ab5776e5f3d9dcfe784182b91 Mon Sep 17 00:00:00 2001 From: yarnom Date: Wed, 29 Oct 2025 16:02:06 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E6=94=B9pid=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sideslope/rtkcluster/RtkClusterService.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/rtkcluster/RtkClusterService.java b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/rtkcluster/RtkClusterService.java index e9b67ac9..4f3492d8 100644 --- a/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/rtkcluster/RtkClusterService.java +++ b/sec-beidou-rtcm/src/main/java/com/imdroid/sideslope/rtkcluster/RtkClusterService.java @@ -132,7 +132,8 @@ public class RtkClusterService implements ApplicationRunner { if (sid != null) { RtkrcvSession upd = new RtkrcvSession(); upd.setSessionId(sid); - upd.setPid((int) p.pid()); + Integer pid = tryGetPidCompat(p); + if (pid != null) upd.setPid(pid); upd.setStartTime(LocalDateTime.now()); upd.setUpdatedAt(LocalDateTime.now()); sessionMapper.updateById(upd); @@ -212,6 +213,18 @@ public class RtkClusterService implements ApplicationRunner { } } + // Java 8-only attempt to get Process pid; returns null if unavailable + private Integer tryGetPidCompat(Process p) { + try { + // Access private 'pid' field on UNIXProcess (Java 8) + java.lang.reflect.Field f = p.getClass().getDeclaredField("pid"); + f.setAccessible(true); + Object v = f.get(p); + if (v instanceof Integer) return (Integer) v; + } catch (Exception ignore) {} + return null; + } + static class DeviceEndpoint { private final String deviceId; private final int port;