3

Javaアプリケーションからjar実行可能ファイル内の外部XMLファイルを読み取る必要があります。
コンソール(java -jar package.jar)からランチした場合は正常に機能しますが、ダブルクリック(Java Platform SEバイナリ)でランチした場合は機能しません。
相対パスにこの問題があります。絶対パスでは、両方の方法で機能します。

4

5 に答える 5

5

XMLタイルへの(JAR相対)パスをファイルのClass-Pathエントリに追加する必要がありMANIFEST.MFます。このエントリには、JARのランタイムクラスパスに関する情報が含まれています。XMLをJARファイル自体と同じフォルダーに入れたいとすると、次のようになります。

Class-Path: .

MANIFEST.MF(ファイルの最後に空白行を入れることを忘れないでください)

Class#getResource()次に、またはを使用してクラスパスリソースとして取得できますClassLoader#getResource()。あなたの場合は最初のもので十分です。

URL xmlResource = getClass().getResource("/filename.xml");
File xmlFile = new File(xmlResource.getPath());
// ...
于 2010-09-08T14:45:42.663 に答える
1

これを試すことができます: 実行可能JARの外部の相対パスを取得する

于 2010-09-08T14:42:38.100 に答える
1

そのファイルをJARマニフェストのクラスパスに追加し、入力ストリームとして読み取ります。

于 2010-09-08T14:24:26.937 に答える
0

実行しているOSがわからないと、正確な答えを出すのは困難です。

一般的な答えは、シェルからコマンドを実行するときに使用するものと同じになるように初期作業ディレクトリを指定するために、ランチャー(デスクトップ上のアイコン)を変更することです。

于 2010-09-08T14:43:15.523 に答える
0
(new File(".")).getAbsolutePath();

あなたにjarパスを与える必要があります。印刷して再確認してから、相対パスを作成します。

于 2010-09-08T14:39:47.400 に答える