2012-05-05 20 views
37

, bu hat üzerinde bana bir hata verirjava.lang.NullPointerException hatası nasıl çözülür? Benim Java programı çalıştırdığınızda

compiler.getTask(null, null, new DiagnosticCollector<JavaFileObject>(), null, null, compilationUnits);

alıyorum Hata: Ben bu hatayı nasıl çözebiliriz

Exception in thread "main" java.lang.NullPointerException 
    at AnotherClassLoader.loadClass(test.java:58) 
    at test.main(test.java:30) 
    at Main.main(Main.java:68) 

söyleyebilir misiniz ?

+0

Herhangi bir yardım istiyorsanız lütfen bir [SSCCE] (http://www.sscce.org) ekleyin. SSCCE olmadan çok yapamayız. Teşekkürler. Ah, ve sorunuzun başlığını biraz daha açıklayıcı bir şeye dönüştürmeyi düşünün lütfen. – kentcdodds

+0

Yığın traktörü size, NullPointerException öğesinin bulunduğu satırı verir. Bunu neden anladığınızı anlamanız ve düzeltmeniz gerekiyor ... –

+4

** ** sorunu tanımlayarak ** çözüldü ve ardından ** tanımlanan problemin düzeltilmesi **. NPE'ler [olmalıdır] sadece aşağıdaki durumlarda meydana gelir: 'someNullExpression.someMember'. Yani, 'null' değeri, doğal olarak oluşacak bu özel durum için bir üye/yöntemin * hedef * ifadesi olmalıdır. Gönderilen örnekte, bu gereksinimi karşılayabilen yalnızca * bir * ifadesi vardır. (İpucu: 'derleyici 'değişkeni ne değerlendirir?) –

cevap

6

Boş bir nesne örneğine başvurmaya çalıştığınızda bu hata oluşur. Verdiğiniz bilgilerle bu hatanın nedenini size söyleyemem, ancak IDE'nizde kolayca hata ayıklayabilirsiniz. Beklenmeyen program davranışını önlemek için istisna işlemlerini kullanmanızı kesinlikle öneririz.

74

NullPointerException, geçirmekte olduğunuz değişkenlerden birinin boş olduğunu, ancak kodun böyle kullanılmayacağını belirtir. Örneğin

, bunu yaparsanız:

Integer myInteger = null; 
int n = myInteger.intValue(); 

kod myInteger ait intValue kapmak için çalışır, ancak boş olduğu için, bu bir yok: boş gösterici istisna olur.

Bunun anlamı, getTask yönteminizin boş olmayan bir şey beklemesidir, ancak boş bir satır geçirmenizdir. GetTask'ın neye ihtiyacı olduğunu öğrenin ve ne istediğini iletin!

1

Karanlıkta sadece bir kare (compiler başlangıç ​​kodunu bizimle paylaşmadığınızdan): compiler ürününü alma biçiminiz, soruna neden oluyor. JRE'nizi jdk'dan farklı olarak JDK'nın içine yönlendirin, jre herhangi bir araç sağlamaz, sonuç olarak NPE.

İlgili konular