Java でゲームを作成しましたが、そのゲームでは当然複数の画像が使用されます。Eclipse を使用してゲームを開発しましたが、Eclipse で実行しても問題はありません。この時点で、ゲームはほぼ完成しているので、インターネットに公開しようとしていますが、このゲームをブラウザで実行することはできません。
ブラウザにロードすると、白い画面が表示されるだけで、エラーはなく、白いだけです。Java が最新であることはわかっています。他の Java アプリを実行してテストしましたが、問題はありません。空白のアプリをクリックしても何も起こらなかったため、しばらくコンソールを表示できませんでしたが、最終的にタスクバーの通知に移動するとコンソールが表示されることに気付きました。そこには、エラーが次のようにリストされています
javax.imageio.IIOException: Can't read input file!
そして、コードにロードした最初の画像を示します。約2ダースの画像がありますが、最初の画像に移動し、コメントアウトするとエラーが2番目にリダイレクトされるため、これはすべての画像で同じ問題であると思います. これらの画像は Eclipse で正常に読み込まれるため、ファイル パスが正しいことはわかっていますが、どういうわけかブラウザには表示されません。
最初の画像をロードする Java コード:
image = ImageIO.read(new File("images/debug/player.jpg"));
Constants.imgPlayer = new Picture(getImage(getDocumentBase(), "images/debug/player.jpg"), image.getWidth(), image.getHeight());
これは、プログラムのロード時に実行され、作成したこの Picture クラスに画像を保存しています。Picture クラスが行うことは、後で実際に画像を使用する必要がある場合に備えて、Image オブジェクトと幅と高さを保持することだけです。を使用する必要がある唯一の理由はImageIO.read()
、各画像の幅と高さを取得できるようにするためです。
デバッグのために、コードの一部を次のように変更しました。
File testFile = new File("images/debug/player.jpg");
System.out.println("exists() = " + testFile.exists());
System.out.println("canRead() = " + testFile.canRead());
testFile.setReadable(true);
System.out.println("setReadable(true)");
System.out.println("canRead() = " + testFile.canRead());
image = ImageIO.read(testFile);
Constants.imgPlayer = new Picture(getImage(getDocumentBase(), "images/debug/player.jpg"), image.getWidth(), image.getHeight());
Eclipse では、すべてが真であり、存在し、読み取ることができ、読み取って動作します。ブラウザ(ちなみにChrome)では、すべてがfalseで、存在せず、読み取れず、読み取ろうとするとエラーがスローされます。
HTML ファイルは [project]/bin/FinalProject.htm にありますが、メイン クラスは [project]/bin/main/FinalProject.class にあります。それらは別のフォルダーにあるため、ファイルパスを異なる必要があるのではないかと思います。HTMLファイルをクラスと同じディレクトリに配置しようとしましたが、ファイルパスを一致するように変更したことは確かですが、クラスが見つからないと表示されます。
この時点でどうすればよいかよくわかりません。Google 検索はあまり役に立ちません。どんな助けでも大歓迎です。