2011-01-18 13 views
25

JSF 2.0, NetBeans 6.9.1, GlassFish Server 3.1, mojarra 2.0.3 ve JasperReports 3.7.6 kullanarak bir web uygulaması geliştiriyorum. Proje kütüphanemde "xerces-2.8.0.jar" jar dosyası bulunmaktadır. Bu dosya JasperReports jar dosyası kitaplığının bir parçası olarak içe aktarıldı. Ben dağıtmayı deneyin zaman, koşmak ya da NetBeans yoluyla projemi hata ayıklama, bu hatayı alırsınız: benim yapı başarısız Projemdeki herhangi değişiklikten sonraXerces hatası: org.apache.xerces.impl.dv.dtd.DTDDVFactoryImpl

java.lang.Exception: java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: com.sun.faces.config.ConfigurationException: CONFIGURATION FAILED! DTD factory class org.apache.xerces.impl.dv.dtd.DTDDVFactoryImpl does not extend from DTDDVFactory. 

ve ben yukarıdaki hata alırsınız, ben dağıtmaya çalıştığınızda, çalıştırın veya hata ayıklayın. Sunucuyu yeniden başlatmalı ve ikinci kez çalıştırmalı/hata ayıklamalıyım. İnterneti araştırdım ve bu soruna bir çözüm bulamıyorum. Söz konusu jar dosyasına baktım ve DTDDVFactoryImpl gerçekten DTDDVFactory'den geliyor - Bu hatayı neden aldığımı bilmiyorum. Sonunda projemi yürütürken, bu hatayı almazsam çok daha hoş olurdu.

Lütfen bunu nasıl düzeltebileceğimi söyleyen var mı? Bu dosyayı proje kitaplığımdan kaldırmam gerekiyor mu? Bu dosyayı daha yeni bir sürüm/eski sürümle güncellemem gerekiyor mu?

+0

Merhaba için $AS_HOME/glassfish/lib/endorsed için $AS_HOME/lib/endorsed için selenium/libs/ kopyalama XML kavanoz (xerces-*, xalan-*, xml-apis*, serialize*) tarafından çevresinde var mı? – Osw

+1

Yapmadım. Anladım diye düşündüm. Projede birden çok Xerxes jar dosyası vardı. Gereksiz olanı kaldırarak bir şeyleri düzeltebilirim diye düşündüm. Ben hatalıydım. Bana bu hatayı düzenli olarak vermeye devam ediyor. – Sean

cevap

22

Kendi xerces.jar dosyanızı sağlarsanız, bunu Onaylanmış Standartlar Geçersiz Kılma Mekanizması (java -Djava.endorsed.dirs=/path/to/xerces.jar) aracılığıyla yapmanız gerekir, bunu yalnızca sınıf yoluna eklemenize izin verilmez (ve er ya da geç başlarsa sorun yaşanır) yap). Açıklamama izin ver.

JAXP, Java API for XML Processing'dur. JAXP nesnelerinin yaratılması (ayrıştırıcılar, XSLT dönüştürücüler, DOM Belgeleri gibi), factory/factory-method pattern aracılığıyla yapılır, böylece yeni bir JAXP uygulamasını ekleyebilirsiniz (JRE'nizde sağlanandan daha yeni olması gerekir). Xerces, bir JAXP uygulaması sağlar ve onaylanmış standartlar içerir (bir onaylı standart olan, Java Topluluğu Süreci dışındaki bir standart işlemle tanımlanan bir Java API'sidir, bkz. Endorsed Standards Override Mechanism). ESOM'u kullanmazsanız her türlü sorunla karşılaşırsınız.

0

Selenium with Glassfish kullanırken bu hatayı aldım. Sana düzeltme bulduk, (GlassFish 2 için) veya GlassFish 4.

+0

Benzer bir sorunum var. WebLogic uygulamasına bazı ek Spring malzeme (mesaj odaklı POJO'lar) ekledim ve şimdi bu hatayı alıyorum. WL 10.3.4, İlkbahar 3.0.5. (Evet, baharın en az 3.2.10'a kadar olması gerektiğini biliyorum. İlkbaharı yenilemeden önce değişimi almayı umuyordum.) –