简体   繁体   中英

How to get the absolute path of the executed jar?

How do I get the location of the executed jar? I found a lot of solutions but none of them work for me. When I run them in my IDE everything is fine. As soon as I build a jar file and run it with java -jar myapp.jar the output is like /.../myapp.jar!/foo/bar

I will run the code in myapp.jar - not in any library.

Location of jar: /home/me/dev/myapp/myapp.jar
Expected output: /home/me/dev/myapp/

I don't want the working directory as I would get with System.getProperty("user.dir");

Why I want to do this:

I want to store and load a file beside the actual jar. Like

/home/me/bin/myapp/myapp.jar
/home/me/bin/myapp/license.key

I want to avoid storing the file into some generic folder like System.getProperty("user.home"); . And I don't want to store the file within the jar file.

java.nio.file.Paths.get(".").toAbsolutePath()将返回当前目录的绝对路径。

I use something along these lines:

[YourClass].class.getProtectionDomain().getCodeSource().getLocation().getPath()

Regards

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM