2011-12-03 13 views
7
.

sormamın nedeni, benim uygulamamın bir Aspectj projesinden oluşturulan yönleri içeren A.jar'ı kullanmasıdır; ve B.jar, A.jar'ın yönleriyle dokunacaklardır. proje myapp derlendiğinde, B.jar'den aynı sınıfları geçersiz kılan birçok Sınıf üretir, bunlar WEB-INF/sınıfları dir içine paketlenir. Bu nedenle eğer tomcat WEB-INF/lib/*. jar'ı ilk yüklediyse, o zaman dokuma yönleri geçerli olmayacaktır.WEB-INF/sınıfları/vs WEB-INF/lib/*. Bir tomcat web uygulaması için paketlenmiş olan bir savaş, bunların CLASSPATH'da önceliğe sahip olduğu WEB-INF/sınıfları ve WEB-INF/lib/* kavanozlarını içerir (</p> <p>

+1

Benzer http://stackoverflow.com/q/5474765/435605 için –

cevap

11

Web uygulamasının WebappX sınıf yükleyicisinden bir sınıf yükleme isteği işlendiğinde, bu sınıf yükleyici, bakmadan önce temsilci yerine önce yerel depolarda görünecektir. İstisnalar var. JRE temel sınıflarının bir parçası olan sınıflar geçersiz kılınamaz. Bazı sınıflar için (J2SE 1.4+ içindeki XML ayrıştırıcı bileşenleri gibi), J2SE 1.4 onaylı özelliği kullanılabilir (yukarıdaki ortak sınıf yükleyici tanımına bakın). Son olarak, herhangi bir JAR içeren servlet API sınıfları, sınıf yükleyici tarafından yoksayılacaktır. Tomcat 5'deki diğer tüm sınıf yükleyicileri, normal yetkilendirme modelini takip eder.

nedenle, bir web uygulaması perspektifinden, sınıf veya kaynak yükleme bu sırada aşağıdaki Depolardaki arar:

Bootstrap classes of your JVM 
System class loader classes (described above) 
/WEB-INF/classes of your web application 
/WEB-INF/lib/*.jar of your web application 
$CATALINA_HOME/common/classes 
$CATALINA_HOME/common/endorsed/*.jar 
$CATALINA_HOME/common/i18n/*.jar 
$CATALINA_HOME/common/lib/*.jar 
$CATALINA_BASE/shared/classes 
$CATALINA_BASE/shared/lib/*.jar 

Yani WEB-INF/sınıfları WEB-INF/lib önce ilk aranır

Ref: http://tomcat.apache.org/tomcat-5.5-doc/class-loader-howto.html

2

WEB-INF/sınıflarına sınıflar eklerseniz, WEB-INF'deki kavanozlardan önce önceliğe sahiptirler/lib. Bunu bazen hata ayıklama amaçları için kullandım. Ayrıca bkz. here.

İlgili konular