7

Eclipse のプロジェクトには、おおよそ次のフォルダーが表示されます。

application
    - src
    - JRE System Library [1.6]
    - Referenced Libraries
    - lib
    - rsc

私たちのプロジェクトでは、File > Export... > Executable JAR を使用したいと考えています。

これで問題なく動作しますが、いくつかの例外があります。application.jar を実行する場合は、引き続き rsc/ フォルダーを application.jar と同じ場所にコピーする必要があります。

rsc/ には、さまざまな部分を分離するための別のフォルダーがあります。基本的に、コードを使用してピースをロードします (少し変更されていますが、パス スタイルは正しいです)。

strUrl = "file:rsc/properties/Constants.properties";
url = new URL(strUrl);
ImageIcon icon = new ImageIcon(url);

rsc/ > Build Path > Use as Source Folder を右クリックできます。

しかし、Eclipse は rsc フォルダーを bin/-folder に自動的にコピーしないため、これも機能しません。そして、ターミナルからはもう実行できません(jarにパッケージ化されていません)

EDIT : Eclipse がこれを正しく処理できないのはなぜですか? 「ネストされた」出力フォルダに問題があるのはなぜですか? [ビルド パス] ダイアログの [ソース] タブで、出力フォルダーを bin/rsc/ に設定して rsc/-フォルダーを簡単に追加できましたが、ネストされたフォルダーを配置することはできないようです...


EDIT 2 : これで、ant を使用してビルドするための xml ファイルを作成することができ、何とか rsc フォルダーを jar ファイルに含めることができました。同じエラーのため、まだ実行されません。リソース パスが JAR 内にあるかどうかに関係なく、本当にリソース パスを確認する必要がありますか? JAR のコンテンツは次のようになりました。

META-INF/
META-INF/MANIFEST.MF
configurator/
controller/
editor/
gui/
logic/
networking/
rsc/
rsc/gamesettings/
rsc/levels/
rsc/pics/
rsc/properties/
util/

しかし、Java は依然として私を嫌っておりjava.io.FileNotFoundException: rsc/properties/Constants.properties、約 100 行のスタック トレースをスローします。


誰もそれを行う方法を考えていますか? thx&よろしく

4

5 に答える 5

15

ソース フォルダーとしてマークrscすると、Eclipse はその内容を出力ディレクトリにコピーします。または、出力でリソースをグループ化したい場合は、rsc下に移動することもできます。src

次にClass.getResource("/properties/Constants.properties")orClass.getResource("/rsc/properties/Constants.properties")を使用でき、アプリが jar としてパッケージ化されているか、ソースから実行されているかに関係なく機能します。

補足として、file:プロトコルは通常のファイルでのみ機能し、jar 内のファイルにアクセスするには、new URL("jar:file:app.jar!/rsc/properties/Constants.properties").

于 2010-01-22T10:00:53.040 に答える
4

試してみてください: [Java ビルド パス] ダイアログで、[ライブラリ] タブに移動し、[クラス フォルダーの追加...] を選択します。rsc[クラス フォルダーの選択] ダイアログから選択します。ディレクトリの内容はrsc、実行可能な jar ファイルに含まれるようになります。

(rsc 自体は含まれないことに注意してください。そのため、rsc の下に新しいサブディレクトリを追加して、jar 内のディレクトリ構造を正しくする必要がある場合があります。)

于 2010-01-16T01:30:08.240 に答える
2

この種の用途では、jar の作成時に自動的にMavenを使用することをお勧めします。Eclipse プラグインもあります。

Antを使用することもできます。

于 2010-01-15T17:08:07.600 に答える
1

私は通常これを手動で行います。あなたの場合、すべてのリソースを含むjar -uffoo.jarrscです。スクリプトを書くか、antでこれを行うことができます

于 2010-01-18T17:32:05.077 に答える
1

Edit 2で、すべてが 1 つの jar に入っている と言うように、これは機能するはずです。

String path = "rsc/img/img.gif";
URL url = this.getClass().getResource(path);
ImageIcon icon = new ImageIcon(url);
于 2010-01-19T21:21:46.173 に答える