Get location of JAR file

Update

Since it doesn’t work in certain test-cases, I’ll update the answer.

The correct way to do this should be with ClassLoader:

File jarDir = new File(ClassLoader.getSystemClassLoader().getResource(".").getPath());
System.out.println(jarDir.getAbsolutePath());

Tested on various classpaths, the output was correct.


Old answer

This should work

File f = new File(System.getProperty("java.class.path"));
File dir = f.getAbsoluteFile().getParentFile();
String path = dir.toString();

It works for me, my program is in:

C:\Users\User01\Documents\app1\dist\JavaApplication1.jar

And it returns

C:\Users\User01\Documents\app1\dist

Leave a Comment