2008-10-31 61 views
15

Başarısız olan ve başarısız olan getResource stilindeki yöntemlerde hata ayıklama nasıl yapılır?Hata ayıklama getResource *

Aradığınız dosyanın var olduğundan eminim, ancak NULL döndürüyor. Herhangi bir uyumsuzluğu tespit etmek için ne aradığını nasıl bilebilirim?

cevap

4

Eclipse-debug-modunu kullanabilir ve başarısız olan yöntemde bir kesme noktası ayarlayabilirsiniz. Oradan başarısız olanı görene kadar arama ağacında adım adım ilerleyebilirsiniz.

En yaygın

+0

ACK, ben de buna katılıyorum. – dhiller

+0

evet en yaygın olanıdır, IDE'den bir karınca komutuna derleme yapmak için birkaç kez oldu ... – Vinze

3

getResource çağrı sınıf dosyasına bir dosya göreli arıyor ... orada kopyalanmaz veya sınıf yolu vb değildir çünkü dosya yok olmasıdır.

İlk tahminim, derlediğiniz zaman kaynak dosyalarını derleme klasörüne koymayı unutmuş olmanızdır. Ben sık sık koşuyordum.

0

Genellikle ClassLoader değiştiğinde bunu yaşıyorum.

Bir uygulamanın çalıştığı içeriğe bağlı olarak ClassLoader'lar bir kaynak dosyası olduğunda farklı kurallara sahiptir. Örneğin, netbeans'te getResource büyük/küçük harfe duyarsızdır, ancak Sun'ın JRE'sinde budur.

Sorunuzu doğrudan yanıtlamamasına rağmen, bunu bilmeniz gerektiğini düşündüm (henüz yapmadıysanız). getResource() yana

12

sizin problemsome getResource() çağrıdan önce arandığını (diğerleri söylediğim gibi) sınıfyolu, gerçek sınıf yolunu dökümü yararlı olabilecek aramaları:

log.debug("classpath is: " + System.getProperty("java.class.path")); 

//the line that is returning null 
... = Thread.currentThread().getContextClassLoader().getResource("foobar"); 

Ne muhtemelen oluyor ki dosya/dizinleri olduğu Sınıf yolunda olduğunuzu düşünüyorsunuz (aslında yol boyunca bir yere yerleştirilmiş olan geçersiz bir yol).

0

Eclipse'e veya JDK (JRE) kaynak dosyalarının bulunduğu favori IDE'ye söylemelisiniz. Daha sonra Java Runtime sınıflarının yöntemlerine de girebilirsiniz.