我可以使用以下代码获取当前Java程序的工作目录:
Path path = Paths.get(*ClassName*.class.getProtectionDomain().getCodeSource().getLocation().toURI());
此外,我可以使用此命令wmic process get CommandLine where name='java.exe' /value
可以获得另一个Java进程的工作目录(更好地以编程方式)?可能用一些jdk / bin实用程序可以解决它?
答案 0 :(得分:2)
您可以通过Attach API获取此信息。要使用它,您必须将jdk的tools.jar
添加到类路径中。然后,以下代码将打印所有已识别的JVM进程的当前工作目录:
for(VirtualMachineDescriptor d: VirtualMachine.list()) {
System.out.println(d.id()+"\t"+d.displayName());
try {
VirtualMachine vm = VirtualMachine.attach(d);
try(Closeable c = vm::detach) {
System.out.println("\tcurrent dir: "+vm.getSystemProperties().get("user.dir"));
}
}
catch(AttachNotSupportedException|IOException ex) {
System.out.println("\t"+ex);
}
}