从不同的目录启动应用程序(.jar文件)时如何获取位于类路径中的绝对文件路径?

时间:2015-03-27 08:44:31

标签: java path processbuilder

假设Java应用程序文件夹包含以下文件:

app.jar
lib/file.exe

在app.jar里面我像这样调用.exe:

String[] exeCmd = new String[]{"lib/file.exe"};
ProcessBuilder pb = new ProcessBuilder(exeCmd);
...

如果我从同一目录启动.jar文件 - 一切正常。但是如果从不同的目录启动应用程序 - 找不到lib/file.exe并且ProcessBuilder退出并且出现错误“没有这样的文件或目录”。

我的问题是 - 尽管应用程序是从其他目录启动的,但如何获得正确的lib/file.exe路径并将其提供给ProcessBuilder

修改

现在我想(不同的方法)那些.exe文件我应该放在用户目录中,比如Windows操作系统中的“应用程序数据”,以后再使用它们?通过在Unix中调用System.getenv("APPDATA");System.getProperty("user.home");可以很容易地找到路径。但另一方面 - 如果有很多PC用户 - 那么每个用户都会复制那些.exe文件(浪费磁盘空间)。

1 个答案:

答案 0 :(得分:2)

你可以这样做:

YourClass.class.getProtectionDomain().getCodeSource().getLocation().getPath(); 
相关问题