Search code examples
javajsf-2primefacesglassfish-3omnifaces

NullPointerException at ZipInputStream


I have a JSF application (Majorra 2.1.20, PrimeFaces 4.0-SNAPSHOT, OmniFaces 1.4.1, running on Glassfish 3.1.2) that works fine in Firefox, Chrome. ONLY when running in Internet Explorer do I get this error :

java.lang.NullPointerException: in is null
at java.util.zip.ZipInputStream.<init>(ZipInputStream.java:100)
at java.util.zip.ZipInputStream.<init>(ZipInputStream.java:79)
at com.sun.faces.application.resource.ZipDirectoryEntryScanner.<init>(ZipDirectoryEntryScanner.java:76)
at com.sun.faces.application.resource.ClasspathResourceHelper.findLibraryWithZipDirectoryEntryScan(ClasspathResourceHelper.java:204)
at com.sun.faces.application.resource.ResourceManager.findLibraryOnClasspathWithZipDirectoryEntryScan(ResourceManager.java:409)
at com.sun.faces.application.resource.ResourceManager.doLookup(ResourceManager.java:247)
at com.sun.faces.application.resource.ResourceManager.findResource(ResourceManager.java:197)
at com.sun.faces.application.resource.ResourceHandlerImpl.createResource(ResourceHandlerImpl.java:143)
at com.sun.faces.application.resource.ResourceHandlerImpl.createResource(ResourceHandlerImpl.java:123)
at javax.faces.application.ResourceHandlerWrapper.createResource(ResourceHandlerWrapper.java:96)
at javax.faces.application.ResourceHandlerWrapper.createResource(ResourceHandlerWrapper.java:96)
at org.omnifaces.resourcehandler.UnmappedResourceHandler.createResource(UnmappedResourceHandler.java:118)
at com.sun.faces.el.ResourceELResolver.getValue(ResourceELResolver.java:136)
at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
at com.sun.el.parser.AstValue.getValue(AstValue.java:138)
at com.sun.el.parser.AstValue.getValue(AstValue.java:183)
at com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:224)
at com.sun.faces.application.resource.ResourceHelper$ELEvaluatingInputStream.evaluateExpressionIntoBuffer(ResourceHelper.java:791)
at com.sun.faces.application.resource.ResourceHelper$ELEvaluatingInputStream.readExpressionIntoBufferAndEvaluateIntoBuffer(ResourceHelper.java:722)
at com.sun.faces.application.resource.ResourceHelper$ELEvaluatingInputStream.read(ResourceHelper.java:690)
at java.io.InputStream.read(InputStream.java:179)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:273)
at java.io.BufferedInputStream.read(BufferedInputStream.java:334)
at java.nio.channels.Channels$ReadableByteChannelImpl.read(Channels.java:385)
at org.omnifaces.util.Utils.stream(Utils.java:215)
at org.omnifaces.resourcehandler.UnmappedResourceHandler.handleResourceRequest(UnmappedResourceHandler.java:196)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:591)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1542)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:343)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
at org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:176)
at org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145)
at org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92)
at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:394)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
at com.sun.enterprise.web.VirtualServerPipeline.invoke(VirtualServerPipeline.java:131)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:328)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
at com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:849)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:746)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1045)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:228)
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
at java.lang.Thread.run(Thread.java:722)

I am at a lost. I cannot seem to understand why this would only happen in IE and not in other browsers.

Any help to resolve this would be appreciated. An explanation to help understand this would also be very welcome (The more you know!)

Update :

I am now getting this error in Chrome as well. Still looking into this.

Update 2 :

I've found the source of this problem (not cause, but faulty code). This in my css sheet :

a.map_sms:hover {
background: #3E9945 url("#{resource['templateImages/map:map_sms.png']}")
    no-repeat;
}

is causing the error. Removing this solves it. This error started showing up when upgraded to PrimeFaces 4.0, never before. Luckily this was legacy code that I just removed and the error is no longer showing up.

Update 3

What I though was the solution to fixing this error was definitely not it. Still getting it, back to the drawing board.

Update 4

Seems like update 2 was right. Found another faulty css in the likes. Lots of time spent finding this here. Still unsure of the reason for the error - which was non-existant before upgrading to PrimeFaces 4.

Update 5

After thinking I had fixed this for good, it came back when in Eclipse I liked 2 projects together (adding a second project on the build path). Not sure if this directs to any leads.


Solution

  • You seem to be hitting this issue when your container scans the jar files in your WEB-INF/lib folder.

    ZipDirectoryEntryScanner is a mojarra class. I would suggest you grab the source and add a log statement in that class to see which file is problematic.

    I ran into a similar issue and, in my case, the WEB-INF/lib folder contained another folder called logs which was causing the exception.