2

Java jar の外にあるファイルへのパスを取得しようとしていますが、絶対パスを使用したくありません。例: jar が ~/lib/myjar.jar にあり、ファイルが同じフォルダーにあるとします。私が試したことは次のようなものですが、失敗します:

File myfile = new File(this.getClass().getResource("../../../").toURI());

注:私のパッケージはcom.contro.guiです。そのため、「ルート」にアクセスするために「../../../」を持っています

ファイルにアクセスする方法がわかりません。なにか提案を??また、アクセスしたいファイルが ~/res/ などの他のフォルダーにある場合はどうなりますか???

4

2 に答える 2

4

ファイルがjarと同じディレクトリにある場合、これでうまくいくと思います(かなりハッキリしていますが...):

URL url = getClass().getProtectionDomain().getCodeSource().getLocation();
File myfile = new File(url.toURI());
File dir = myfile.getParentFile(); // strip off .jar file

(これはテストしていませんが、実行可能のようです。もちろん、ファイルベースの jar でのみ動作します)。

ファイルがランダムな場所にある場合は、パラメーターを渡すか、のような「既知の」場所を確認する必要があると思いますuser.home。(または、いつでもファイルを jar a use に入れることができますgetResource()。)

于 2010-10-14T03:33:26.240 に答える