2017-11-26 2 views
-1

私はそれが私の問題のすべての可能性を与えると確信していない1)xsoは良い答えではないと言った2)私は最も簡単な解決策を探したい3) jarファイルシステムでファイルをブラウズするときとは別のものにする必要があります。4)古いスレッドです。Java 8やJava 9、または別のライブラリで変更された可能性があります。jarのフォルダを参照することは可能ですか?いいえ、なぜですか?

さらに新しいリンクで私を納得させることはできません。ディレクトリ内のディレクトリを見つけるための問題はどこで解決されましたか?ここでは、jarファイルのみです。私の場合、私は知らない(と私は知っている必要はありません)動物のリスト、色のリスト、...

私は目トラッカー(http://gazeplay.net)用のゲームを開発しています。これらのゲームは特に障害のある子供のために行われ、両親はしばしばコンピュータの使用に慣れていません。したがって、できるだけ簡単にソフトウェアをリリースしようとしています。

私はjava/javafxで作成しました。ソフトはjarファイルとしてダウンロードしてダブルクリックする必要があります。

新しいゲームでは、アイデアは子供にいくつかの写真を表示することです、声は注文を与え、彼は正しいものを見つめます。例えば、«ゾウはどこですか? »子供は象を選ぶ必要があります。それは色、漫画のキャラクターと同じにすることができます...私は動物のために可能な限り一般的な何かをしようとしました、すべては動物のディレクトリ(馬のためのもの、イーグルスのためのもの、...)、各ディレクトリには複数のイメージがあります。したがって、新しい動物を追加するだけで(ディレクトリを追加するだけで済みます)、簡単に新しい画像を追加することができます(ディレクトリに追加する)。新しいゲームを作り、ディレクトリの新しい階層を構築するのは簡単です(1つは色のため、もう1つは漫画のキャラクタのためです...)。ここに私の実際のディレクトリ構造の抜粋があります。

actual directory structure

enter image description here

それは私のIDEにはかなりうまく動作しますが、残念ながらそれは私のjarファイルでは動作しません。完全なパスを知っていても、File listFiles()として関数を使用することは不可能であれば、イメージを表示するのは簡単です。私は解決策を見つけようとしますが、うまくいかないようです。何人かの人は、それはニオで可能だと言うようですが、私はそれを動作させることができませんでした。

私には2つの質問があります: は可能でしょうか、そうでない場合、なぜそれは不可能ですか?私の瓶にはフォルダがあり、消えません。コンテンツをリストする方法がないのはなぜですか? いいえ、できるだけ簡単にソリューションを実装するにはどうすればよいですか?

ありがとうございました!

+0

これを試しましたか? ファイルファイル=新しいファイル(YOURCLASSNAME .class.getClassLoader()。getResource( "data")。toURI()。getPath()); file.listFiles(); – mcd

+1

jarファイルのエントリはファイルシステム内にないので、 'Files' APIではこれを行うことはできません。 (瓶自体はもちろんです。)あなたの問題に対する2つの解決策が思い浮かぶ:1.画像を保管する代わりに。 jarファイルで、それらをアプリケーションを実行するマシンのファイルシステムに格納します。これにより、画像が保存されている場所をユーザーに宣伝し、アプリケーション設定として便利な場所に保存する必要があります。 2.索引ファイルをリソースとして追加します。テキストファイルを使用してディレクトリ内のリソースを一覧表示し、この情報を使用して画像を検索するだけです。 – fabian

+0

@ fabian:あなたがリンクしている質問には、このOPがやろうとしていることに対して正しく無用ではないという受け入れられた答えがあります。 – xs0

答えて

1

IDEでコードを実行すると、通常はファイルとディレクトリがそのまま使用されます。アプリケーションをJARにパックすると、それらは1つのファイルにまとめられているので、あなたが記述した問題が発生します。

アプリを実行すると、いわゆるクラスパスを使用して項目を検索し、jarファイルのディレクトリと場所の両方をクラスパスに配置することができるため、Javaは自動的に両方をサポートします。通常、コードや既知のリソースに使用されるときは自動的に処理されるため、処理する必要はありませんが、自分でコードを書く必要があります。

どのファイルが利用可能であるかを知りたい場合は、クラスパスを調べて、ディレクトリまたはjarファイルの場合は各エントリを確認する必要があります。ディレクトリをスキャンするには、既に行っているファイルapiを使用し、JARファイルをスキャンするには、おそらくJarFile APIを使用する必要があります。

+0

getResource()を使って言ったように、クラスパスを使ってデータディレクトリから各ファイルを走査する必要があります。素敵なansプラス1 – mcd

関連する問題