2012-02-16 10 views
0

私のjava jarはc:\program files<i do not know>\i do not know\here.jarにインストールされています。ユーザーが自分のアプリケーションを実行するとき。Javaでダブルクリックまたは実行された正しいパスを取得するにはどうすればよいですか?

私はいつもc:\ uesrs \\ here.jarとその失敗を受け取ります。

String Windows7HomeEditionProgramFileDirectroyStruct = System.getProperty("user.dir");

は、どのように私はそれをダブルクリックしたからか、実行された正しいパスを得ることができますか?

詳細(jarファイルが置かれている場所の答えが、どれも両方が言っているテスト):

は1を試してみてください)

new File(".").getAbsolutePath(); 
or 

new File(".").getCanonicalPath(); 

C:\Users\sun>java -jar "C:\Users\sun\Documents\NetBeansProjects\JavaApplication1 
\dist\JavaApplication1.jar" 
C:\Users\sun\. 

2を試してみてください)

ClassLoader.getSystemClassLoader().getResource(".").getPath(); 

C:\Users\sun>java -jar "C:\Users\sun\Documents\NetBeansProjects\JavaApplication1 
\dist\JavaApplication1.jar" 
Exception in thread "main" java.lang.NullPointerException 
     at javaapplication1.JavaApplication1.main(JavaApplication1.java:18) 

フォローアップ:

String test = JavaApplication1.class.getProtectionDomain().getCodeSource().getLocation().getPath(); 

C:\>java -jar "C:\Users\sun\Documents\NetBeansProjects\JavaApplication1\dist\Jav 
aApplication1.jar" 
/C:/Users/sun/Documents/NetBeansProjects/JavaApplication1/dist/JavaApplication1. 
jar 

答えて

2

"はuser.dir" システムプロパティは、JARファイルの作業ディレクトリを返します。 Binyaminの答えも同じです。

実行中のJARファイルを含むディレクトリを探しています。 this threadにも同様の質問がありました。答えがあなたを助けてくれるかもしれません。

3

あなたはそのようなカレントディレクトリを取得することができます:あなたは「はuser.dir」を使用して何を得る

String path = new File(".").getAbsolutePath(); 

をユーザーディレクトリです。

+0

「C:¥Users¥sun¥Documents¥NetBeansProjects¥JavaApplication1 ¥dist¥」の出力結果はどのように取得できますか?その場所であるが、ユーザーの場所ではない、またはコマンドの場所からではありません。 – YumYumYum

+0

ユーザーはjarファイルを取り出し、C:\ here.jarに配置しました。明日、彼はファイルを取り出してD:\ here.jarに配置しました。今すぐC:\ java -jar d: '\ here.jarというコマンドプロンプトから起動すると、出力結果をc:\ではなくd:\として取得したいと考えています。どのようなアイデア? – YumYumYum

3

user.dirを使用すると、Windowsのユーザーディレクトリが常に表示されます。

はこれを試してみてください:

ClassLoader.getSystemClassLoader().getResource(".").getPath(); 
+0

上記の編集をご覧ください。 – YumYumYum

関連する問題