0

現在のjarファイルのパスを取得するコードがあります。しかし、奇妙なことがあります。2つのjarファイル(2つの異なるプロジェクト)があります。プロジェクトAで:これを実行してコンソールに印刷すると、正しく印刷されます。ただし、プロジェクトBでは、フォルダまでではなく、現在のjarファイルのドライブを印刷するだけです。

例:フォルダーD:\ temp内のA.jarとB.jarの両方:

Bの結果:/D:/temp/

Aの結果:(./前にドットがあります!!!)

これが私のコードです:

        String path = getClass().getProtectionDomain().getCodeSource().getLocation().getPath();
        String decodedPath = URLDecoder.decode(path, "UTF-8");
        String RealPath = decodedPath.substring(0, decodedPath.lastIndexOf("/") + 1);

        System.out.println("path: " + path);
        System.out.println("decodePath: "+decodedPath);
        System.out.println("Real path not include file name: "+RealPath);
4

1 に答える 1

0

私の知る限り、Javaでディレクトリを操作していたとき、ピリオド(。)は現在のディレクトリを意味します。おそらくそれは単にjavaが奇妙に動作している可能性がありますか?または、両方のjarファイルを同時に実行していますか?Bの前にAを実行するか、またはその逆を実行してみて、それが異なるかどうかを確認してください。(私はこれをコメントとして作成しますが、そうするのに十分な評判はないと思います:()

于 2012-04-13T20:43:56.873 に答える