2012-01-06 16 views
5

Sunucu tarafı Java kodumun içinde işlem yapmak için ikili bir görüntü dosyası yüklemeye çalışıyorum. Şu anda benim yürütme sınıfı var pakette Resmimi yerleştirerek ve sesleniyorum: Ben bir sunucuya dağıtmak zaman patlatılmış savaş kurulumunda benim geliştirme kutusunda Tomcat çalıştıran, ancak ben, bu iyi çalışırTomcat’te dağıtılan patlamamış bir savaş dosyasında bir kaynak dosyasını nasıl okuyabilirim?

Image img = Image.getInstance(this.getClass().getResource("logo.png")); 

Tomcat'in, savaş dosyalarını patlamaması durumunda, getResource çağrısı null değerini döndürür.

Image img = Image.getInstance(this.getClass().getResource("/../../logo.png")); 

Yine, bu benim geliştirme kutusunda çalışır, ama başka bir yerde dağıtmak değilken:

Ben de bağlam köküne görüntüyü hareketli ve şu şekilde erişen denedim.

Bu dosyaya erişmenin daha iyi bir yolu var mı? Neyi yanlış yapıyorum?

Teşekkürler!

+0

web uygulamamı oluşturmak için Maven kullanarak. Sorunumu düzelten tam bir cevabım var, ancak kendi sorumu üzerine 8 saat yayınlayamıyorum. – 11101101b

+0

Kaynakları "src/main/resources" dizinine koyun. Ardından şu adrese erişin: this.getClass(). GetResource ("/ logo.png"); veya: Thread.currentThread(). GetContextClassLoader(). GetResource ("logo.png"); – 11101101b

cevap

5

Maven kullanarak bina varsa, görüntü aslında arşive yerleştirilen alır emin olmak gerekir.

src/main/resources dizininize kaynaklar koyun.

this.getClass().getResource("/logo.png"); 

ya: Sonra onlara erişmek

Thread.currentThread().getContextClassLoader().getResource("logo.png"); 

(yukarıdaki yorumun Kod örneklerinde, ancak daha görünür olmasını cevap koymak) muhtemelen de ben dile sahip olmalıdır

+0

Lütfen ilk durumda dosya adından önce '/' harfini unutmayın. –

1

Sen Sınıfyolu kökünde resimlerinizi koymak ve bu deneyebilirsiniz:

Thread.currentThread().getContextClassLoader() 
       .getResource("logo.png"); 
+1

+1 - Sınıf dosyanızın köküne göre, WAR dosyasındaki "WEB-INF/sınıflar", birçoğu söz konusu kaynağı/kaynakları koyacaktır. Her ne kadar orada "images/logo.png" gibi klasörler kullanarak düzenleyebilirlerse de. – rfeak

İlgili konular