0

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 検索はあまり役に立ちません。どんな助けでも大歓迎です。

4

1 に答える 1

1

ローカル ファイル システムからファイルを読み取ろうとしています。ブラウザのサンドボックスで実行される Java では、これが許可されません。結局のところ、他人のゲームが自分のホーム バンキングの記録などを読み取れるようにしたくないでしょう。

代わりに画像リソースを使用してください。

image = getImage(getDocumentBase(),"player.jpg");

Java ドキュメントのgetImageを参照してください。

于 2012-07-08T22:30:18.497 に答える