1

たとえば、次のコードを使用して、単純な Java アプリを作成しました。

String currentDir = new java.io.File(".").getCanonicalPath();
javax.swing.JOptionPane.showMessageDialog(null, currentDir); //This line shows a graphical dialog with the current dir

ターミナルから実行すると、jarファイルが配置されているディレクトリが表示されます。しかし、GUI ファイルマネージャーを使用して実行すると (つまり、jar ファイルを右クリック -> Open With -> OpenJDK Java 7 Runtime)、作業ディレクトリはユーザーのホームディレクトリ (/home/angstrem) になります。作業ディレクトリを jar ファイルがあるディレクトリに設定するにはどうすればよいですか?

4

2 に答える 2

1

あなたはこれを行うことができます:

String jarPath = YourClass.class.getProtectionDomain().getCodeSource().getLocation().getPath();

YourClassjar で定義された実際のクラスに置き換えます。

その後、ファイル パスを からの相対パスにすることができjarPath、プログラムは作業ディレクトリに関係なく動作します。

于 2013-02-10T23:05:00.363 に答える
0

You can't, and you shouldn't be able to. Consider multi-threading for example. You can only make your application current-path-insensitive.

于 2013-02-10T23:08:06.837 に答える