2011-03-15 42 views
2

我在eclipse中編寫了一個applet,並且在eclipse環境下它運行良好。將Java applet轉換爲Jar的問題。也許圖像加載問題

從這個項目創建一個jar文件時,問題就開始了。

在測試了幾個選項的jar後,我認爲問題是從網頁加載圖像。

任何小程序的其他功能似乎可以在jar中正常工作。

加載圖像在我的項目中的代碼看起來像這樣:

MediaTracker mt = new MediaTracker(this); 
String photo = imagePath 
URL base = null; 
try { 
base = getDocumentBase(); 
} 
catch (Exception e) { 
} 
if(base == null){ 
     System.out.println("ERROR LOADING IMAGE"); 
} 
Image imageBase = getImage(base,photo); 
// Some code that works on the image (not relevant) 

    // The rest of the code 
    icon.setImage(image); 
    imageLabel.setIcon(icon); 

但罐子無法加載imgae和運行時,它不會DISPLY它和小程序是因爲,卡住了。 (不像在日食中,加載圖像並顯示它)

可能是什麼問題?

第二個問題是,從Eclipse中的小程序加載需要幾秒鐘。有沒有辦法加快速度?

感謝您的幫助,

+0

你可以發佈錯誤消息,如果你得到一個。 – clamp 2011-03-15 09:29:28

+0

歡迎來到SO,但是..這是什麼垃圾片段?它甚至不會編譯,更不用說運行了。爲了更快提供更好的幫助,請發佈SSCCE(http://pscode.org/sscce.html)。還要注意2件事。 1)getDocumentBase()不會拋出異常。 2)文件庫永遠不會爲空。 – 2011-03-15 09:32:33

+0

clamp:沒有錯誤信息。安德魯:我上傳的代碼是我測試過的選項之一。第一個代碼被使用:ImageIcon圖標=新的ImageIcon(新的URL(照片))。但我很高興聽到更好的方式從網絡加載圖像。關於我的問題,我更加認爲問題與加載時間有關(即使是在日食中相當緩慢的時間)。使用線程可以解決一些問題。 (不是加載圖像的時間)。我會嘗試並希望解決問題。非常感謝您的幫助,如果有更多評論,我們將很樂意閱讀。 :) – user660231 2011-03-15 09:52:14

回答

1

我不知道這到底是怎麼在Eclipse中工作。

問題是,getDocumentBase()返回頁面的位置,其中嵌入了小程序(例如http://some.site.com/index.html),並且您正試圖從該位置加載圖片。顯然,沒有圖片,只有一個html(或php)文件,並且加載失敗。

如果你的目標是加載從罐子裏的圖像,嘗試:

Image img = null; 
try { 
    img = ImageIO.read(getClass().getResource("/images/tree.png")); 
} catch (IOException ex) { 
    System.err.println("Picture loading failed!"); 
} 

其中「/images/tree.png」是路徑,圖像文件中的源代碼樹。

編輯:如果你只需要加載來自URL的圖像,你可以使用:

Image img = null; 
try { 
    img = ImageIO.read(new URL("http://some.site.com/images/tree.png")); 
} catch (IOException ex) { 
    System.err.println("Picture loading failed!"); 
} 

這種方法是有點比Applet.getImage更好(新的URL(...)) - 加載許多圖像時遇到了一些問題。

+0

我希望這是正確的方塊。非常感謝你的職位。對於您的解決方案,問題再次出現。它在eclipse中工作得非常好,但它不通過jar文件加載。 (或者需要太長時間)。我不,如果它是相關的,但從applet作爲jar我可以連接到URL(其他網頁,例如,加載「谷歌。com)「並加載並顯示在另一個頁面中(因爲我可以從eclipse中完成),但是我不能將Image加載到Image對象,這與eclipse的情況不同。是否可能是由於安全的原因? – user660231 2011-03-15 11:22:28

+0

如果有些東西不能處理我的例子,那麼就會拋出一個異常,如果你打開Java控制檯,你可以看到它 - 它可能會給你一個線索,如果你的applet是無符號的,然後有一些安全限制 - 我不記得確切,但有一些關於只允許連接到主機服務器。 – Rogach 2011-03-15 15:18:39

+0

嗨。感謝您的幫助。那麼問題是套接字權限。我應該添加授予網站我希望連接到,我正在閱讀,但如果您知道的話,還想獲得其他好的提示。謝謝大家的提示和幫助! – user660231 2011-03-16 10:02:11