获取运行Jar或Exe的名称

时间:2013-01-07 02:41:26

标签: java jar

我需要做的是获取正在运行的jar / exe文件的名称(它将是Windows上的EXE,mac / linux上的jar)。我一直在寻找,我似乎无法找到如何。

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

5 个答案:

答案 0 :(得分:8)

  

文件(MyClass.class.getProtectionDomain()getCodeSource()的getLocation()toURI()...);

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

  

URI不是分层

我的解决方案是:

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('!')));
}

答案 1 :(得分:5)

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

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

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

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

答案 2 :(得分:4)

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

应该给你罐子。

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

   Process p = Runtime.getRuntime().exec
    (System.getenv("windir") +"\\system32\\"+"tasklist.exe");

答案 3 :(得分:1)

尝试以下

System.getProperty("java.class.path")

答案 4 :(得分:0)

使用Lunch4j 您可以通过编辑生成的xml为exe文件添加图像名称,您必须将标记值true从false更改为true