Javaで実行ファイル(Jarファイル)の格納パスを取得する方法です。
一応、Eclipseで実行した時はプロジェクトの出力先フォルダを
取得できるようにしてみました。
こうすると、Eclipseで組んでる時とJarにしたときで
同じフォルダ構成が使えるので色々便利かなーと。
まず、普通の実行パスの取得方法は、
System.getProperty("user.dir");
で取得できます。
が、これだと「Jarファイルを実行したパス」しか取れません。
例えば、コマンドプロンプトでデスクトップから
Cドライブ直下のJarファイルを実行すると上のメソッドの戻り値は
デスクトップのパスになり、Jarファイルの格納パスではありません。
Jarの格納パスを取るには、確実に存在するクラスファイルのパスをURIで取得して、
それをうにゃうにゃするとJarの格納パスが取れます。
「うにゃうにゃ」で何をやるかは、まあ、取得したURIを見てもらえば分かると思います。
気をつけないといけないのはJarファイルの時は頭に「jar:」がついてること、
デフォルトパッケージの時はgetPackage()はnullになることですかね。
パスをURLで扱わないのは、なんかURLだと日本語パスがおかしくなったような気がするため。
そんなにテストしてないのでなんとも言えませんが。
一応、実行した時のイメージを貼っておきます。
・Jarファイルで実行した時
・Eclipseで実行した時
あと、ソースとJarファイルを。
InstallPathGetterTest.jara
InstallPathGetterTest.jar[0回]
PR