首先通过:java.lang.management
包提供的接口获取当前进程ID;接下来利用wmic命令根据进程ID获取进程exe的目录。代码如下:
/** * Windows下获取运行当前程序的java.exe完整路径 * 返回示例:C:\Program Files\Java\jdk1.8.0_191\bin\java.exe * * @return */ public static String getCurrentJavaHome() { try { //获取程序自己的pid String pid = ManagementFactory.getRuntimeMXBean().getName().split("@")[0]; //执行wmic命令获取自己被那个java.exe执行 String command = String.format("wmic process %s GET ExecutablePath", pid); Process process = Runtime.getRuntime().exec(command); List<String> lines = IOUtils.readLines(process.getInputStream(), "UTF-8"); //等待执行完毕 process.waitFor(); for (String line : lines) { if (line.contains("\\")) return line.trim(); } } catch (Exception e) { e.printStackTrace(); } return null; }
未经允许不得转载:鹞之神乐 » Java程序获取执行自己的java.exe路径