NoClassDefFoundError ve ClassNotFoundException arasındaki fark nedir?
Belirtilen hata ve İstisna arasındaki farkı bilmek istiyorum.
Bunların her biri ve bu tür hatalar ile başa çıkmak için nasıl herhangi bir düşünce süreci alıyorum sebebi nedir?
Bir proje üzerinde çalışırken. Eğer yeni jar dosyasını dahil etmek için mevcut kodunu değiştirmek istiyorsak, bu durumlar karşısında. Bazen bir java uygulaması webstart uygulamalarında dağıtılmış istemci tarafı veya sunucu tarafı gelecekler.
Olası nedenler rastlamak var:
- kod istemci tarafı için build.xml paketleri dahil değildir
- çalışma zamanı sınıf kullanıyoruz yeni kavanoz için eksik
- önceki kavanoz ile sürüm çakışması
Ama şu an itibariyle isabet ve deneme yöntemi ile işlerin için uğraşıyorum.
Daha fazla açıklık ve anlayış bu konuda ihtiyacım var.
CEVAP
Java dan farkı Özellikleri aşağıdaki gibidir API.
Bir uygulama çalıştığında atılır yük dize ile sınıf adını kullanarak:
- Sınıf
forName
yöntemClass
.- Sınıf
findSystemClass
yöntemiClassLoader
.- Sınıf
loadClass
yöntemiClassLoader
.ama hiçbir tanım sınıfı ile belirtilen isim bulunamadı.
Eğer Java Sanal Makinesi veya atılan ** 8 örneği yüklemeye çalışır bir sınıf tanımı (bölüm olarak bir parçası olarak normal bir yöntem çağrısı veya yeni bir örnek yeni oluşturma ifade ve tanım yoktu. sınıf bulunamadı.
-Aradı sınıfı tanımı şu anda yürütülen zaman var sınıf, ama tanımı derlendi artık bulunabilir.
Yani, NoClassDefFoundError
kaynak başarıyla derlendi oluşuyor gibi görünüyor, ama zamanında, class
gerekli dosyalar bulunamadı. Bu class
gerekli tüm dosyaları alındı JAR dosyaları, dağıtımı ve üretimi ile ilgili olabilecek bir şeyler olabilir.
ClassNotFoundException
, zamanında derslere yansıtıcı aramalar yapmaya çalışıyorum kaynaklanıyor olabilir gibi görünüyor, ama program aramaya çalışıyor sınıfları yok.
İkisi arasındaki fark Error
Exception
Bir bir. Error
ve Java Sanal Makinesi sorunları bulmak için bu beklenen bir sınıf bulmakta güçlük doğar NoClassDefFoundError
ile. Derleme çalışmaları için beklenen bir program class
dosyalar nedeniyle bulunamadı koşamaz veya derleme zamanı sırasında üretilen karşılaştı aynı değildir. Bu programı JVM tarafından başlatılan olarak çok kritik bir hata.
Diğer taraftan, ClassNotFoundException
bir miktar beklenir yani Exception
, ve geri kazanılabilir bir şeydir. Yansıma kullanarak hata eğilimli olabilir (işler beklendiği gibi gitmeyebilir bazı beklentileri var. Gerekli tüm sınıfları var olduğunu görmek derleme zamanı kontrol yok, istediğiniz sınıfları bulma ile herhangi bir sorun çalışma zamanında görünür.
Bir URI, URL ve URN arasındaki fark ne...
Aramak ve uygulamak arasındaki fark ne...
@Staticmethod ve @Python classmethod a...
Match_parent ve fill_parent arasındaki...
Varchar ve nvarchar arasındaki fark ne...