Bug 45785 - ClassCastException if directory ending with .jar exists in WEB-INF/lib

68 篇文章 0 订阅
53 篇文章 0 订阅

 

Andreas Sahlbach 2008-09-11 12:22:35 EDT

Exception occurs if there is a directory in WEB-INF/lib having a .jar ending
(e.g. foo.jar). Don't know if it makes sense to create such a dir in
WEB-INF/lib, in my case a bug in another tool created such a dir. 

But in any case: Tomcat should not crash because of such a directory, IMHO.

java.lang.ClassCastException: org.apache.naming.resources.FileDirContext cannot
be cast to org.apache.naming.resources.Resource
    at
org.apache.catalina.util.ExtensionValidator.validateApplication(ExtensionValidator.java:182)
    at
org.apache.catalina.core.StandardContext.start(StandardContext.java:4167)
    at
org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
    at
org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:627)
    at
org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:553)
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:488)
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)
    at
org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
    at
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
    at org.apache.catalina.core.StandardService.start(StandardService.java:516)
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
    at 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)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Comment 1 Mark Thomas 2008-09-14 13:03:54 EDT
This has been fixed in trunk and proposed for 6.0.x
Comment 2 Mark Thomas 2008-09-19 03:59:54 EDT
This has been fixed in 6.0.x and will be included in 6.0.19 onwards.
Comment 3 Rolf Wojtech 2009-07-07 00:35:40 EDT
Created an attachment (id=23934)
 [details]


Add support for directories with name ending on .jar

While the specific case (directory called .jar in WEB-INF/lib) has been fixed,
two other cases remain in ExtensionValidator.

Therefore I reopened this bug:

We're using an exploded deployment mechanism which uses extracted jar files in
folders called jarname.jar. The eclipse projects build directly into those
folders.
However when adding these projects to a jboss launch configuration, which
results in a jarname.jar folder (not file) to be part of the classpath, JBoss
will fail because ExtensionValidator tries to treat the jarname.jar folder as a
file.
ExtensionValidator only checks if a java.io.File endsWith(".jar") but it fails
to check if it is an actual file, not a directory.

I attached a proposed fix (I only added the !item.isDirectory() and
!files[i].isDirectory() )

I ran into other JBoss problems after fixing this which means that this does
not really affect me. It may not be popular to name directories something.jar
but in the cases of exploded deployment this seems normal. In any case my patch
does not affect the normal usage of actual .jar files so I see no reason not to
include it.
Comment 4 Rolf Wojtech 2009-07-07 00:36:28 EDT
Reopened due to additional problems with directories called somename.jar
Comment 5 Mark Thomas 2009-09-09 09:21:46 EDT
I have fixed trunk and proposed the same fix for 6.0.x based on your patch.

Many thanks.
Comment 6 Mark Thomas 2009-10-03 10:35:29 EDT
This has been fixed in 6.0.21 and will be included in 6.0.21 onwards.

Attachments
Add support for directories with name ending on .jar (1.03 KB, patch)
2009-07-07 00:35 EDT , Rolf Wojtech
Details
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@18e8e27b] 2023-07-22 09:35:58.167 ERROR 44888 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.ClassCastException: com.sc_core.hardware.entity.Bracelet cannot be cast to com.sc_core.hardware.entity.BraceletMessage] with root cause java.lang.ClassCastException: com.sc_core.hardware.entity.Bracelet cannot be cast to com.sc_core.hardware.entity.BraceletMessage at com.sc_core.hardware.service.Impl.BraceletServiceImpl.BraceletOnlineCount(BraceletServiceImpl.java:46) ~[classes/:na] at com.sc_core.hardware.controller.BraceletController.BraceletOnlineCount(BraceletController.java:37) ~[classes/:na] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_131] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_131] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_131] at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_131] at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190) ~[spring-web-5.2.15.RELEASE.jar:5.2.15.RELEASE] at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138) ~[spring-web-5.2.15.RELEASE.jar:5.2.15.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105) ~[spring-webmvc-5.2.15.RELEASE.jar:5.2.15.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:878) ~[spring-webmvc-5.2.15.RELEASE.jar:5.2.15.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:792) ~[spring-webmvc-5.2.15.RELEASE.jar:5.2.15.RELEASE] at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.2.15.RELEASE.jar:5.2.15.RELEASE] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040) ~[spring-webmvc-5.2.15.RELEASE.jar:5.2.15.RELEASE] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943) ~[spring-webmvc-5.2.15.RELEASE.jar:5.2.15.RELEASE] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.2.15.RELEASE.jar:5.2.15.RELEASE] at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) ~[spring-webmvc-5.2.15.RELEASE.jar:5.2.15.RELEASE] at javax.servlet.http.HttpServlet.service(HttpServlet.java:652) ~[tomcat-embed-core-9.0.46.jar:4.0.FR] at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.2.15.RELEASE.jar:5.2.15.RELEASE] at javax.servlet.http.HttpServlet.service(HttpServlet.java:733) ~[tomcat-embed-core-9.0.46.jar:4.0.FR]
最新发布
07-23
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值