eclipseからプログラムを実行すると、正常に表示され、Resources \からの画像が表示され、同じ場所からのサウンドも表示され、テキストファイルが正しく検出されます。ただし、jarをエクスポートし、7Zipを使用してリソースをそこにコピーすると、画像は機能しますが、同じフォルダーにあり、同じパスが使用されていても、サウンドとテキストファイルが見つかりません。私のコードでそれらを見つけるために。Resourcesという名前のjarファイルの横にフォルダーを配置し、そこにすべてを配置することでこれを修正できますが、jarファイルに配置するだけで画像に対してのみ機能する理由と、その方法を知りたいです。テキストファイルとオーディオファイルも処理します。私が何を意味するかを示す例:
File inventory = new File("Resources/inv.txt");
threadpath = "Resources/threads.wav";
enemy1 = new Sprite(new Texture("Resources/miniForestGolem.png"));
Eclipseで実行すると、3つすべてが正常に機能しますが、エクスポートして、resourcesフォルダーをjarファイルに配置すると、イメージのみが機能します。
編集:
私は自分のリソースを含める方法を知っています、そしてそうしました、私はそれらを追加した後でも、どのように/なぜいくつかのリソースにアクセスできないのかについて尋ねています。
わかりました。コメントから、Eclipseから実行することと.jarから実行することの違いを推測できます。
new File(...)
Resources /で実際のファイルを見つけるので、それは機能しますそれを機能させる方法は次のとおりです。
File
オブジェクトの代わりにを使用するAPIメソッドの代替を探しますInputStreams
。取得したら、クラスパスから取得したInputStreamsとしてすべてのリソースを取得します。MyClass.java内にいる場合は、次のようにしますMyClass.class.getClassLoader().getResourceAsStream("Resources/inv.txt")
。これを行うことで達成したこと:File
実際のオペレーティングシステムファイル上に構築されたオブジェクトの代わりにInputStreams
、Javaアプリケーションのクラスパスから直接読み取りを取得します。このようにして、それらをjar、Webアプリケーション内のWEB-INF / classesディレクトリ、または一部のアプリケーションサーバーのライブラリフォルダにパッケージ化できます...アプリケーションのクラスパス内であればどこでもかまいません。アプリケーションをポータブルで使用可能な方法でパッケージ化する必要がある場合は、これを行います。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加