0

完全な編集: そうですね、このプロジェクトに取り組んでいない人にとっては明らかなことではないので、一部の人をいらいらさせるかもしれませんが、ここで詳細をリセットします.

当初:- 一連のテキスト ファイル、画像ファイル、サウンド ファイルが Eclipse IDE ワークスペースにありました。IDE からアプリケーションを実行している間、すべてがピカピカでした。テキストベースのファイル (この例では .DAT) は File クラスと Scanner クラス (以下を参照) を使用してロードされ、画像とサウンドは slick2d によってロードされています (以下を参照)。

// Loading a text based file from the IDE workspace
Scanner scanner = new Scanner(new File("text/intro1.DAT"));

// Loading an image and a sound as handled by slick2d
Image background = new Image("images/backgrounds/menuBG.jpg");
Sound bgm = new Sound("sounds/music/MainMenuTheme.wav");

ただし、これまでのところすべてが機能しています...

エクスポート:- ファイルを実行可能な jar にエクスポートしたとき、テキスト、音声、画像は一緒にエクスポートされませんでした。私はいくつかの調査を行い、ライブラリの /lib フォルダー内に含まれているものがエクスポートされるかどうかを知りました。これには 2 つの効果がありました。

  • これにより、IDE のすべてのリンクが壊れました。すべてが ./lib/... に存在するようになりました
  • ただし、libの内容はjarの最上位に直接エクスポートされるため(少なくとも、私が行っているようにEclipseとJarSpliceでエクスポートする場合)、これにより違いが修正されました。少なくとも私が解決しようとしている問題の前に。

問題:- 上記のコードを見ると、テキスト フォルダーとサウンド フォルダーは、エクスポートされた jar のまったく同じレベルに存在します。それとパス文字列は、両方が機能したIDE以来変更されていません。現在、実行可能な jar にエクスポートされた後、すべてのサウンド ファイルと画像ファイルは slick2d によって正常にロードされますが、すべてのテキスト ベース (.DAT) ファイルは実行時に FileNotFound 例外が発生します。かわった。

明らかに、画像とサウンドはまだロードされていますが、エラーは引き続き発生するため、直接的な意味でのパスに問題はありません。

間違った方法でファイルにアクセスしていますか? slick2d がそれ自体を管理する方法と、私が持っている方法でファイルにアクセスしようとする方法との間に、ある種の競合がありますか?

これが少し明確になることを願っています。

4

2 に答える 2

0

ファイルへの相対パスを指定する場合、Javaは現在の作業ディレクトリを基準にしてその相対パスを解釈します。現在の作業ディレクトリは、javaコマンドを実行する場所です。

このディレクトリを基準にしてファイルの場所を指定する必要があります。

例:

   File located at: drive1/files/yourfile
   java run in: drive1/aDir/

   In this case you should specify the file's location as: ./../files/yourfile
于 2012-08-14T21:41:32.463 に答える
0

ファイルが移動したと言ったので、このようなものが必要になると思います

File file = new File("lib/text/intro1.DAT");
Scanner scanner = new Scanner(file);

Scanner scanner = new Scanner(new File("lib/text/intro1.DAT"));

相対ファイル パス (「/」またはドライブ文字で始まらないファイル パス) は、プロジェクト/jar のルートから始まります。

于 2012-08-14T20:40:49.433 に答える