簡體   English   中英

Java ImageIO.read()在瀏覽器中失敗

[英]Java ImageIO.read() fails in browser

我用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類中。 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)中,所有內容都是假的,不存在,無法讀取,然后在嘗試讀取時拋出錯誤。

盡管主類位於[project] /bin/main/FinalProject.class,但是HTML文件位於[project] /bin/FinalProject.htm。 我想知道是否因為它們位於單獨的文件夾中,所以文件路徑需要不同。 我嘗試將HTML文件放置在與類相同的目錄中,但是盡管我確定我更改了文件路徑以使其匹配,但它會說找不到該類。

我目前還不確定該怎么做,Google搜索並沒有真正的幫助。 任何幫助表示贊賞。

您正在嘗試從本地文件系統讀取文件。 在瀏覽器沙箱中運行的Java不允許這樣做。 畢竟,您不希望其他人的游戲能夠讀取您的家庭銀行記錄或類似記錄。

請改用圖像資源。

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

請參閱Java文檔中的getImage

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM