2017-09-11 3 views
-2

私はアプリで現在のアプリのパスを取得したいと思います。Java - 現在実行されているアプリのパス

Path currentRelativePath = Paths.get(""); 
String s = currentRelativePath.toAbsolutePath().toString(); 
System.out.println("Current config file path is: " + s); 

私は以下のように使用するとうまくいくようです。

> pwd 
> /usr/local/ 
> java -jar app/getapppath.jar // executed app inside app folder 
> Current config file path is : /usr/local // I want /usr/local/app 

「cd app」の後に私のアプリを実行することはできますが、根本的に修正したいと思います。これのアイデア?

答えて

0

クラスローダーを使用してその情報を取得できます。それが動作します私の場合は

package test; 
import java.net.URL; 

public class a { 

    public static void main(String[] args) { 
    URL u = ClassLoader.getSystemResource("test/a.class"); 
    System.out.println(u); 
    } 
} 

:ここでは、あなたのニーズに採用することができますたとえば、私はアプリの外に設定ファイルを持っている

$ cd /tmp 
$ java -cp /home/me a 
file:/home/me/a.class 
$ 
+0

、アプリから、この設定ファイルを読み込もう。どちらも同じパス/フォルダです。あなたの答えはこれを行うことができますか? –

+0

まあ、現在の作業パスはPaths.get( "")として使用できますが、これはあなたの例です。 jar/classファイルへのパスを取得したい場合は、私の例を使用することができます。 – kofemann