簡體   English   中英

Tomcat 6沒有從WEB-INF / lib加載jar

[英]Tomcat 6 not loading jars from WEB-INF/lib

我正試圖在我的tomcat環境中追蹤配置問題。 我們的生產服務器正在運行tomcat安裝並從共享NFS掛載中讀取戰爭。

但是,當我使用獨立的盒子(使用它們的配置)嘗試相同的戰爭時,我收到下面發布的錯誤。

有趣的是,如果我將WEB-INF / lib中的所有jar解壓縮到WEB-INF / classes中,這個錯誤就會消失。

所以,似乎某些東西阻止了應用程序加載WEB-INF / lib路徑,但我不能在我的生活中找到任何會導致這種情況的tomcat設置,因為它正在檢測應用程序和配置,而不是包括罐子。

有任何想法嗎?

嚴重:在org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)中配置類org.springframework.web.context.ContextLoaderListener java.lang.ClassNotFoundException:org.springframework.web.context.ContextLoaderListener的應用程序偵聽器時出錯)org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)位於org.apache.catalina.core.StandardContext的org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3786)。在org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)在org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)在org.apache開始(StandardContext.java:4342)位於org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:627)的.catalina.core.StandardHost.addChild(StandardHost.java:525)org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java) :553)org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:488) org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent (LifecycleSupport.java:117)位於org.apache的org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)org.apache.catalina.core.StandardHost.start(StandardHost.java:719)。 catalina.core.ContainerBase.start(ContainerBase.java:1045)org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)org.apache.catalina.core.StandardService.start(StandardService.java: 516)在org.apache.catalina.core.StandardServer.start(StandardServer.java:710)在org.apache.catalina.startup.Catalina.start(Catalina.java:578)在sun.reflect.NativeMethodAccessorImpl.invoke0(母語法)在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)在java.lang.reflect.Me thod.invoke(Method.java:597)org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)12月20日,2011 4:20:38 PM org.apache.catalina.core.StandardContext listenerStart SEVERE:配置類org.springframework.security.web.session.HttpSessionEventPublisher的應用程序監聽器時出錯java.lang.ClassNotFoundException:org.springframework.security.web位於org.apache.catalina.core上的org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)的.session.HttpSessionEventPublisher,位於org.apache.catalina.core的org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233) .StandardContext.listenerStart(StandardContext.java:3786)在org.apache.catalina.core.StandardContext.start(StandardContext.java:4342)在org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)在org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)at org.apache.catalina.core.StandardHost。 的addChild(StandardHost.java:525)在org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:627)在org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:553)在org.apache位於org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)的.catalina.startup.HostConfig.deployApps(HostConfig.java:488)org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java) :311)在org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)在org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)在org.apache.catalina.core。 org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)上的StandardHost.start(StandardHost.java:719)位於org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)org .apache.catalina.core.StandardService.start(StandardService.java:516)位於org.apache.catalina.startup.Catalina.start(Catalina)的org.apache.catalina.core.StandardServer.start(StandardServer.java:710) .java:578)在sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)at java。 lang.reflect.Method.invoke(Method.java:597)org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)org.apache.catalina.startup.Bootstrap.main(Bootstrap.java: 413)

有一點需要注意,ClassNotFoundException並不總是意味着找不到列出的類(在你的情況下是org.springframework.web.context.ContextLoaderListener),它可能意味着無法加載類。

如果該特定類由於任何原因而無法加載,假設它有一個引用另一個未找到的類的靜態塊,則類加載器報告加載失敗為“ClassNotFoundException”。

確保您的WEB-INF / lib目錄不包含Tomcat默認庫中也存在的類/ jar。 如果有多個版本,這有時會導致加載失敗。 通過將jar解壓縮到classes目錄中,您可能會按路徑順序移動類,這就是它可以工作的原因。

所以,我仍然沒有理由說明為什么會這樣,但我終於能夠讓它發揮作用。 通常,我們使用'unzip'將war解壓縮到deploy目錄中。 我把它改成使用'jar',一切都神奇地起作用。

知道為什么會這樣。 我嘗試了所有其他排列(檢查我們的部署文件夾,符號鏈接,權限,所有權等),這是唯一有所作為,甚至差異兩個解壓縮文件夾顯示它們是相同的,具有相同的權限,但一個工作,一個沒有

另外值得注意的是:生產部署多年來一直使用'解壓縮'。 我真的無法想出這個,但我很高興我至少可以做其他事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM