2012-04-13 8 views
0

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

:はA.jarとb.JARがフォルダDの両方で:\温度:Bの

結果:/D:/temp/

の結果:./は(前にドットを有する!!!)

ここで

私のコードです:(。)

 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); 
+1

両方のプロジェクトを起動するために使用するコマンドライン式を投稿できますか? – dash1e

+0

* "私はコードを持っています*なぜですか? –

+0

私のために正しく動作しますが、.classとして実行すると "RealPath"の予想される動作が得られませんbtwを使用しているコンソール/ターミナルは何ですか? –

答えて

0

私の知る限りでは、私はJavaでのディレクトリとの完全な停止を働いていたときに、現在のディレクトリを意味します。おそらくそれはちょうど奇妙にジャバの演技かもしれない?または、両方のジャーを同時に実行していますか? Bの前にAを実行してみてください。そうでない場合は、Bの前にAを実行してください。 (私はコメントとしてこれを作っていますが、十分な評判がないと思います。)

関連する問題