解决 Problematic frame: C [sigar-amd64-winnt.dll+0x14ed4] 问题 (JDK11 后版本生成 JRE, 得到当前进程)

谭泳
2023-12-01

1. 主要由于 JDK 版本问题

Java 版本中 1.8.0_1311.8.0_241 都适合, 在 jdk1.8.0_261 包括在内以及以上不适合

2. Linux 下 11 版本的都合适

这个我也不知为何, Linux 下 Java11 可以, Windows 就不可以.
开始我以为是没有 Java11 下没有 JRE. 结果不是.

2.1 JDK11 后版本添加 JRE

在 JDK 根目录下运行下面的命令便可生成 JRE

bin\jlink.exe --module-path jmods --add-modules java.desktop --output jre

3. 其他方法

除了降低版本我没有找到有用的资源.

运用 new Siger().kill(pid, 15) 想法: 杀掉 PID 进程. 结果没成功.

// 得到当前 PID
RuntimeMXBean runtime = ManagementFactory.getRuntimeMXBean();
String name = runtime.getName();
System.out.println(name);
System.out.println("Process ID: " + name.substring(0, name.indexOf("@")));
 类似资料: