【发布时间】:2015-12-25 22:49:46
【问题描述】:
如果可执行文件保存在 Windows 环境变量 PATH 的一部分位置,我想获取在 Java 中启动的可执行文件的路径。
例如,我们使用下面的代码 sn-p 在 windows 中启动 NOTEPAD。这里notepad.exe 保存在Windows 文件夹下,该文件夹是Windows 环境变量PATH 的一部分。所以这里不需要给出可执行文件的完整路径。
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec("notepad.exe");
所以我的问题是,如何在 Java 程序中获取可执行文件/文件的绝对位置(在这种情况下,如果 notepad.exe 保存在 c:\windows 下,在 java 程序中我需要获取路径 c:\windows),如果它们是从PATH 位置这样启动的?
【问题讨论】:
-
没有内置的方法可以做到这一点。您需要手动挑选
PATH元素并在每个元素中搜索notepad.exe。 -
system.env("PATH")也许(我自己也不知道)。 -
这很脆弱。这取决于您运行它的机器的配置。
-
@duffymo 它很脆弱,但别无选择(除非你掏出
where,如阿米拉的回答中所述)。甚至which命令行实用程序(where的 Unix 版本)也是以这种方式实现的(即,没有用于执行execvp样式查找的库函数)。
标签: java windows environment-variables