2013-07-26 102 views
1

我的紋理只在Eclipse中工作,但當我嘗試將它導出爲可運行的jar時,啓動它並且沒有紋理。我創建了一個資源文件夾並將其連接到該項目,方法是將其設置爲類文件夾,但只能在eclipse中使用。這是我通常訪問紋理的方式。爲什麼我的紋理無效?

Image something; 
public Image getsomethingImg(){ 

    ImageIcon s=new ImageIcon("res/something.png"); 
    something=s.getImage(); 
    return something; 
} 

然後我畫它。

g2d.drawImage(getsomethingImg(), 0, 0, null); 
+0

構建/部署後,您應該檢查紋理的位置。可能值得重新審視這些路徑,因爲它們在Eclipse項目中可能會有所不同。 「res/...」可以在Eclipse中工作,因爲基本路徑將是項目根目錄,但在外部運行項目可能需要完整路徑,如「C:\ ....」 – FazoM

+0

1)'g2d.drawImage(getsomethingImg() ,0,0,null);'應該(很有可能)是'g2d.drawImage(getsomethingImg(),0,0,this);'。 2)不要嘗試在繪圖方法中加載圖像! 3)爲了更快得到更好的幫助,請發佈[SSCCE](http://sscce.org/)。 –

+1

請看看這個答案,[爲項目添加資源](http://stackoverflow.com/a/9866659/1057230)。希望它能幫助你:-) –

回答

1

How to includes all images in jar file using eclipse

試試這個未來。

ImageIcon s = new ImageIcon(getClass().getResource("res/something.png")); 
+1

使用'ImageIO'來讀取圖像更安全,因爲如果路徑錯誤,它會引發信息異常。 –

+0

這是一個沒有辦法的問題,但我該怎麼寫呢?就像在一堂課裏我一直在收到錯誤。 –

+0

@liamspeakman:請看看這個[回覆](http://stackoverflow.com/a/11372350/1057230),這可能會給你這個想法:-)另外,不要把ImageObserver部分保存爲'null',在你的'g2d.drawImage(getsomethingImage(),0,0,compReferenceOnWhichYouDrawing)' –