首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >获取应用程序的路径

获取应用程序的路径
EN

Stack Overflow用户
提问于 2008-10-20 11:07:35
回答 19查看 88.5K关注 0票数 80

我最近搜索了如何在Java中获取应用程序的目录。我终于找到了答案,但我花了令人惊讶的长时间,因为搜索这样一个通用术语并不容易。我认为用多种语言编写一份如何实现这一目标的列表将是一个好主意。

如果你(不)喜欢这个想法,请随意投上/反对票,如果你喜欢,请贡献。

澄清:

包含可执行文件的目录和当前工作目录(由Unix下的pwd提供)之间有细微的区别。我最初对前者感兴趣,但也可以随意发布确定后者的方法(澄清您指的是哪一个)。

EN

回答 19

Stack Overflow用户

发布于 2009-03-24 07:17:07

Java中调用

代码语言:javascript
复制
System.getProperty("user.dir")

代码语言:javascript
复制
new java.io.File(".").getAbsolutePath();

返回当前工作目录。

调用

代码语言:javascript
复制
getClass().getProtectionDomain().getCodeSource().getLocation().getPath();

返回包含当前类的JAR文件的路径,如果直接从文件系统运行,则返回生成当前类的CLASSPATH元素(路径)。

示例:

  1. 您的应用程序位于

使用java -jar C:\MyJar.jar.

  • The命令测试shell ( 'C:\MyJar.jar'.

)和子目录以测试应用程序;前两个调用返回‘C:\ C:\test\subdirectory.

  • Start \ cd’;第三个调用返回‘C:\MyJar.jar’.

当从文件系统而不是JAR文件运行时,结果将是生成的类文件的根目录的路径,例如

代码语言:javascript
复制
c:\eclipse\workspaces\YourProject\bin\

该路径不包括生成的类文件的包目录。

获取应用程序目录的完整示例,如果直接从文件系统运行(例如,在调试时),则不包含.jar文件名或类文件的相应路径:

代码语言:javascript
复制
String applicationDir = getClass().getProtectionDomain().getCodeSource().getLocation().getPath(); 

if (applicationDir.endsWith(".jar"))
{
    applicationDir = new File(applicationDir).getParent();
}
// else we already have the correct answer
票数 59
EN

Stack Overflow用户

发布于 2008-10-20 11:07:59

.NET中(C#、VB、…),您可以在当前Assembly实例中查询其Location。但是,这会附加可执行文件的文件名。下面的代码清理路径(using System.IOusing System.Reflection):

代码语言:javascript
复制
Directory.GetParent(Assembly.GetExecutingAssembly().Location)

或者,您可以使用AppDomain提供的信息来搜索引用的程序集:

代码语言:javascript
复制
System.AppDomain.CurrentDomain.BaseDirectory

VB允许通过My命名空间使用另一个快捷方式:

代码语言:javascript
复制
My.Application.Info.DirectoryPath
票数 22
EN

Stack Overflow用户

发布于 2008-10-20 12:24:32

Windows中,使用WinAPI函数GetModuleFileName()。为模块句柄传入NULL,以获取当前模块的路径。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/218061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档