0

我用 Java 制作了一个游戏,它自然会在其中使用多个图像。我使用Eclipse开发游戏,在Eclipse中运行没有问题。至此,游戏已经基本完成,所以我正在尝试将它放到互联网上,但我无法让这款游戏在浏览器中运行。

在浏览器中加载它只是显示一个白屏,没有错误,只是白色。我知道 Java 是最新的,我已经运行了其他 Java 应用程序来测试它,它们都没有任何问题。有一段时间我无法查看控制台,因为单击空白应用程序什么也没做,但最终我注意到转到任务栏中的通知允许我看到控制台。在那里它将错误列为

javax.imageio.IIOException: Can't read input file!

并指向我在代码中加载的第一张图片。我有大约 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 类所做的只是保存 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)中,一切都是假的,它不存在,无法读取,然后在尝试读取时抛出错误。

HTML 文件位于 [project]/bin/FinalProject.htm,但主类位于 [project]/bin/main/FinalProject.class。我想知道是否因为它们位于不同的文件夹中,文件路径需要不同。我尝试将 HTML 文件与类放在同一目录中,但它会说它找不到类,尽管我确定我更改了文件路径以匹配。

我现在不确定该怎么做,谷歌搜索并没有真正帮助。任何帮助表示赞赏。

4

1 回答 1

1

您正在尝试从本地文件系统读取文件。在浏览器沙箱中运行的 Java 不允许这样做。毕竟,您不希望其他人的游戏能够读取您的家庭银行记录或类似记录。

请改用图像资源。

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

请参阅Java 文档中的getImage

于 2012-07-08T22:30:18.497 回答