首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取运行Jar或Exe的名称

获取运行Jar或Exe的名称
EN

Stack Overflow用户
提问于 2013-01-07 10:41:26
回答 5查看 17.4K关注 0票数 11

我需要做的是获取正在运行的jar/exe文件的名称(在windows上是EXE,在mac/linux上是jar )。我一直在寻找,但我似乎找不到方法。

如何获取运行Jar或Exe的名称?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-01-07 10:46:57

希望这能帮助你,我测试了代码,这将返回完整的路径和名称。

也许你想在代码上多玩一点,然后给我一些反馈。

代码语言:javascript
复制
File(MyClass.class.getProtectionDomain().getCodeSource().getLocation().toURI());‌

这是在stackoverflow How to get the path of a running JAR file?上的一个类似但不是==的问题上发现的

票数 9
EN

Stack Overflow用户

发布于 2013-09-27 15:50:01

File(MyClass.class.getProtectionDomain().getCodeSource().getLocation().toURI());‌

在编译后的应用程序中返回简单路径,在jar中返回错误:

URI不是分层的

我的解决方案是:

代码语言:javascript
复制
private File getJarFile() throws FileNotFoundException {
    String path = Main.class.getResource(Main.class.getSimpleName() + ".class").getFile();
    if(path.startsWith("/")) {
        throw new FileNotFoundException("This is not a jar file: \n" + path);
    }
    path = ClassLoader.getSystemClassLoader().getResource(path).getFile();

    return new File(path.substring(0, path.lastIndexOf('!')));
}
票数 10
EN

Stack Overflow用户

发布于 2013-01-07 10:47:22

代码语言:javascript
复制
  File(MyClass.class.getProtectionDomain().getCodeSource().getLocation().toURI().g‌​etPath());  

应该会把罐子给你。

至于exe,我假设你正在使用某种包装器,在运行它之前,你需要知道exe的名称。然后你可以使用类似这样的东西:

代码语言:javascript
复制
   Process p = Runtime.getRuntime().exec
    (System.getenv("windir") +"\\system32\\"+"tasklist.exe");
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14189162

复制
相关文章

相似问题

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