Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #36068

Re: How do I get the name and path of the running jar file?

From Nigel Wade <nmw@local.domain>
Newsgroups comp.lang.java.programmer
Subject Re: How do I get the name and path of the running jar file?
Date 2016-12-08 13:20 +0000
Message-ID <eat50vFk6idU1@mid.individual.net> (permalink)
References <0564c643-106a-499a-833e-dffe34d1e915@googlegroups.com> <o27ri1$bbj$1@gioia.aioe.org>

Show all headers | View raw


On 07/12/16 02:18, Arne Vajhøj wrote:
> On 12/6/2016 3:41 PM, triciac.1999.p@gmail.com wrote:
>> I am writing a program that has sound files with type names and
>> numbers like, "win1.wav" and "lose3.wav". I want the program to get
>> the name and path of the running jar file so I can programmatically
>> choose a random sound file of a specified type that is packaged
>> inside the jar file without having to hardcode it myself. Everything
>> I've tried works in Eclipse, but not after it is exported because it
>> doesn't find the name of the jar file, only the path. Is there a way
>> I can get the name AND path of the jar file? Could I search through
>> the jar file packages without using the name and path?
>
> You will get the full name including path of the jar with one of the
> following:
>
> String path = MyClass.class.getProtectionDomain().getCodeSource().getLocation().getPath();
>
> String path = MyClass.class.getClassLoader().getResource("mypackage/MyClass.class").getPath();
>
> The format is sligthly different. The first is probably more convenient
> as you would not need to truncate at the '!'.
>

Both methods CodeSource.getLocation() and  ClassLoader.getResource() return a URL, which will be URL encoded. So the path ought to be URLdecode'd otherwise there may be problems with any characters in the path which URL has encoded.

Also, in the case of ClassLoader.getResource(), when executed from a jar it will be of type "jar", and from class files it will be of type "file". This will probably come into play when you run the code in an IDE. NetBeans (I don't know about Eclipe) runs class files, not jars. You will probably need to handle each case differently.

> But I doubt that you need it.
>
> InputStream is = MyClass.class.getClassLoader().getResource("mypackage/foobar.wav");
>
> should give you a stream to the file. Both when everything is
> in the file system and when everything is in the jar file.
>

This is definitely the preferred method if you know which file you want to open.

Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

How do I get the name and path of the running jar file? triciac.1999.p@gmail.com - 2016-12-06 12:41 -0800
  Re: How do I get the name and path of the running jar file? Eric Sosman <esosman@comcast-dot-net.invalid> - 2016-12-06 16:07 -0500
    Re: How do I get the name and path of the running jar file? Tricia Cahill <triciac.1999.p@gmail.com> - 2016-12-06 14:22 -0800
  Re: How do I get the name and path of the running jar file? Arne Vajhøj <arne@vajhoej.dk> - 2016-12-06 21:18 -0500
    Re: How do I get the name and path of the running jar file? Nigel Wade <nmw@local.domain> - 2016-12-08 13:20 +0000
      Re: How do I get the name and path of the running jar file? Arne Vajhøj <arne@vajhoej.dk> - 2016-12-11 20:24 -0500
        Re: How do I get the name and path of the running jar file? Nigel Wade <nmw@local.domain> - 2016-12-12 09:51 +0000
          Re: How do I get the name and path of the running jar file? Arne Vajhøj <arne@vajhoej.dk> - 2016-12-12 20:25 -0500
    Re: How do I get the name and path of the running jar file? Wayne <wayne@nospam.invalid> - 2016-12-09 01:50 -0500
      Re: How do I get the name and path of the running jar file? Arne Vajhøj <arne@vajhoej.dk> - 2016-12-11 20:10 -0500
  Re: How do I get the name and path of the running jar file? Silvio <silvio@internet.com> - 2016-12-07 22:06 +0100
  Re: How do I get the name and path of the running jar file? lingmaaki@gmail.com - 2017-05-22 23:22 -0700

csiph-web