aLaserShark
aLaserShark

Reputation: 23

Get URL of file in .jar that the program is running

Given hello.jar, which is compiled with maven, I want to access a resource located under folder/file.file. However I don't know how to get the URL of the current JAR I am in. Would

file://./folder/file.file

work correctly, or,

jar:file://./!hello.jar/folder/file.file

or is there an easier way to do this?

(Sorry for the dumb question, I'm new to maven.)

Upvotes: 2

Views: 15487

Answers (2)

JohnKlehm
JohnKlehm

Reputation: 2398

You can find a jar's resources by using:

String resRelativePath = "folder/thing.jpg";
URL resUrl = this.getClass().getResource(resRelativePath);

Upvotes: 3

user330315
user330315

Reputation:

This works for me:

URL url = this.getClass().getProtectionDomain().getCodeSource().getLocation();
String jarPath = URLDecoder.decode(url.getFile(), "UTF-8");

jarPath then contains the complete path to the jar file where the class with that code is located.

Note the "detour" through URLDecoder, otherwise you'll get a filename containing %20 if the jar files is located in a directory that contains spaces.

Upvotes: 5

Related Questions