hmm, to be honest I never considered this situation of having custom tags in the plugin jar. I am not sure if that can be fixed, I would have to dive into that a bit more..
regards, Harry Op 26 feb. 2014 16:33 schreef "Brian Burch" <br...@pingtoo.com>: > On 25/02/14 20:41, Harry Metske wrote: > >> Brian, >> >> first, the value for jspwiki.plugin.externalJars should probably be an >> absolute path. >> And secondly, that could be the cause of the problem, you should not put >> your photocollection.jar in a directory that is already on tomcat's >> classpath (given it's name, /var/lib/tomcat7/lib looks like the lib folder >> for your classpath ?). >> >> So, could you try something like /tmp/photocollection.jar ? >> > <snip/> > > Thanks for looking at the problem for me, Harry. > > I didn't realise jspwiki was using its own ClassLoader, so I now see why > the situation was confused when I put my jar into a directory where one of > the tomcat ClassLoaders would find it first. > > I am now using: > > jspwiki.plugin.externalJars = /var/lib/tomcat7/extra-lib/ > photocollection.jar > > ... and jspwiki is successfully finding and using my plugin. > > The bad news is that my plugin jar also contains my custom taglib, which > is needed by my custom template css. The tags cannot be found and so the > wiki html looks pretty strange! > > It seems as if a different ClassLoader is responsible for finding > taglibs... > > 2014-02-26 15:15:13,692 ERROR [org.apache.catalina.core. > ContainerBase.[Catalina].[www2.pingtoo.com].[/wiki].[jsp]] > Servlet.service() for servlet jsp threw exception > java.lang.ClassNotFoundException: com.pingtoo.jspwiki.tags. > PhotoPageNameTag > at org.apache.catalina.loader.WebappClassLoader.loadClass( > WebappClassLoader.java:1718) > at org.apache.catalina.loader.WebappClassLoader.loadClass( > WebappClassLoader.java:1569) > at org.apache.jasper.servlet.JasperLoader.loadClass( > JasperLoader.java:126) > at org.apache.jasper.servlet.JasperLoader.loadClass( > JasperLoader.java:63) > at org.apache.jsp.templates.photoCollection.Header_jsp._ > jspx_meth_photo_005fPhotoPageName_005f0(Header_jsp.java:360) > at org.apache.jsp.templates.photoCollection.Header_jsp._ > jspService(Header_jsp.java:214) > at org.apache.jasper.runtime.HttpJspBase.service( > HttpJspBase.java:70) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) > at org.apache.jasper.servlet.JspServletWrapper.service( > JspServletWrapper.java:432) > at org.apache.jasper.servlet.JspServlet.serviceJspFile( > JspServlet.java:390) > at org.apache.jasper.servlet.JspServlet.service(JspServlet. > java:334) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) > at org.apache.catalina.core.ApplicationFilterChain. > internalDoFilter(ApplicationFilterChain.java:303) > at org.apache.catalina.core.ApplicationFilterChain.doFilter( > ApplicationFilterChain.java:208) > at org.apache.catalina.core.ApplicationDispatcher.invoke( > ApplicationDispatcher.java:748) > at org.apache.catalina.core.ApplicationDispatcher.doInclude( > ApplicationDispatcher.java:604) > at org.apache.catalina.core.ApplicationDispatcher.include( > ApplicationDispatcher.java:543) > at org.apache.jasper.runtime.JspRuntimeLibrary.include( > JspRuntimeLibrary.java:954) > at org.apache.jasper.runtime.PageContextImpl.include( > PageContextImpl.java:656) > at org.apache.wiki.tags.IncludeTag.doEndTag(IncludeTag.java:84) > at org.apache.jsp.templates.photoCollection.ViewTemplate_ > jsp._jspx_meth_wiki_005fInclude_005f1(ViewTemplate_jsp.java:523) > at org.apache.jsp.templates.photoCollection.ViewTemplate_ > jsp._jspService(ViewTemplate_jsp.java:138) > at org.apache.jasper.runtime.HttpJspBase.service( > HttpJspBase.java:70) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) > at org.apache.jasper.servlet.JspServletWrapper.service( > JspServletWrapper.java:432) > at org.apache.jasper.servlet.JspServlet.serviceJspFile( > JspServlet.java:390) > at org.apache.jasper.servlet.JspServlet.service(JspServlet. > java:334) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) > at org.apache.catalina.core.ApplicationFilterChain. > internalDoFilter(ApplicationFilterChain.java:303) > at org.apache.catalina.core.ApplicationFilterChain.doFilter( > ApplicationFilterChain.java:208) > at org.apache.catalina.core.ApplicationDispatcher.invoke( > ApplicationDispatcher.java:748) > at org.apache.catalina.core.ApplicationDispatcher.doInclude( > ApplicationDispatcher.java:604) > at org.apache.catalina.core.ApplicationDispatcher.include( > ApplicationDispatcher.java:543) > at org.apache.jasper.runtime.JspRuntimeLibrary.include( > JspRuntimeLibrary.java:954) > at org.apache.jasper.runtime.PageContextImpl.include( > PageContextImpl.java:656) > at org.apache.wiki.tags.IncludeTag.doEndTag(IncludeTag.java:84) > at org.apache.jsp.Wiki_jsp._jspService(Wiki_jsp.java:122) > at org.apache.jasper.runtime.HttpJspBase.service( > HttpJspBase.java:70) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) > at org.apache.jasper.servlet.JspServletWrapper.service( > JspServletWrapper.java:432) > at org.apache.jasper.servlet.JspServlet.serviceJspFile( > JspServlet.java:390) > at org.apache.jasper.servlet.JspServlet.service(JspServlet. > java:334) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) > at org.apache.catalina.core.ApplicationFilterChain. > internalDoFilter(ApplicationFilterChain.java:303) > at org.apache.catalina.core.ApplicationFilterChain.doFilter( > ApplicationFilterChain.java:208) > at org.apache.tomcat.websocket.server.WsFilter.doFilter( > WsFilter.java:52) > at org.apache.catalina.core.ApplicationFilterChain. > internalDoFilter(ApplicationFilterChain.java:241) > at org.apache.catalina.core.ApplicationFilterChain.doFilter( > ApplicationFilterChain.java:208) > at org.apache.wiki.ui.WikiServletFilter.doFilter( > WikiServletFilter.java:177) > at org.apache.wiki.ui.WikiJSPFilter.doFilter( > WikiJSPFilter.java:121) > at org.apache.catalina.core.ApplicationFilterChain. > internalDoFilter(ApplicationFilterChain.java:241) > at org.apache.catalina.core.ApplicationFilterChain.doFilter( > ApplicationFilterChain.java:208) > at org.apache.catalina.core.StandardWrapperValve.invoke( > StandardWrapperValve.java:220) > at org.apache.catalina.core.StandardContextValve.invoke( > StandardContextValve.java:122) > at org.apache.catalina.authenticator.AuthenticatorBase.invoke( > AuthenticatorBase.java:610) > at org.apache.catalina.core.StandardHostValve.invoke( > StandardHostValve.java:170) > at org.apache.catalina.valves.ErrorReportValve.invoke( > ErrorReportValve.java:98) > at org.apache.catalina.authenticator.SingleSignOn. > invoke(SingleSignOn.java:339) > at org.apache.catalina.valves.AccessLogValve.invoke( > AccessLogValve.java:950) > at org.apache.catalina.core.StandardEngineValve.invoke( > StandardEngineValve.java:116) > at org.apache.catalina.connector.CoyoteAdapter.service( > CoyoteAdapter.java:408) > at org.apache.coyote.http11.AbstractHttp11Processor.process( > AbstractHttp11Processor.java:1040) > at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler. > process(AbstractProtocol.java:607) > at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor. > doRun(NioEndpoint.java:1721) > at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor. > run(NioEndpoint.java:1679) > at java.util.concurrent.ThreadPoolExecutor.runWorker( > ThreadPoolExecutor.java:1145) > at java.util.concurrent.ThreadPoolExecutor$Worker.run( > ThreadPoolExecutor.java:615) > at java.lang.Thread.run(Thread.java:744) > 2014-02-26 15:15:13,702 WARN [org.apache.wiki.tags.IncludeTag] Including > failed, got a servlet exception from sub-page. Rethrowing the exception to > the JSP engine. > org.apache.jasper.JasperException: javax.servlet.ServletException: > java.lang.NoClassDefFoundError: com/pingtoo/jspwiki/tags/PhotoPageNameTag > at org.apache.jasper.servlet.JspServletWrapper.handleJspException( > JspServletWrapper.java:549) > at org.apache.jasper.servlet.JspServletWrapper.service( > JspServletWrapper.java:455) > at org.apache.jasper.servlet.JspServlet.serviceJspFile( > JspServlet.java:390) > at org.apache.jasper.servlet.JspServlet.service(JspServlet. > java:334) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) > at org.apache.catalina.core.ApplicationFilterChain. > internalDoFilter(ApplicationFilterChain.java:303) > at org.apache.catalina.core.ApplicationFilterChain.doFilter( > ApplicationFilterChain.java:208) > at org.apache.catalina.core.ApplicationDispatcher.invoke( > ApplicationDispatcher.java:748) > at org.apache.catalina.core.ApplicationDispatcher.doInclude( > ApplicationDispatcher.java:604) > at org.apache.catalina.core.ApplicationDispatcher.include( > ApplicationDispatcher.java:543) > at org.apache.jasper.runtime.JspRuntimeLibrary.include( > JspRuntimeLibrary.java:954) > at org.apache.jasper.runtime.PageContextImpl.include( > PageContextImpl.java:656) > at org.apache.wiki.tags.IncludeTag.doEndTag(IncludeTag.java:84) > at org.apache.jsp.templates.photoCollection.ViewTemplate_ > jsp._jspx_meth_wiki_005fInclude_005f1(ViewTemplate_jsp.java:523) > at org.apache.jsp.templates.photoCollection.ViewTemplate_ > jsp._jspService(ViewTemplate_jsp.java:138) > at org.apache.jasper.runtime.HttpJspBase.service( > HttpJspBase.java:70) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) > at org.apache.jasper.servlet.JspServletWrapper.service( > JspServletWrapper.java:432) > at org.apache.jasper.servlet.JspServlet.serviceJspFile( > JspServlet.java:390) > at org.apache.jasper.servlet.JspServlet.service(JspServlet. > java:334) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) > at org.apache.catalina.core.ApplicationFilterChain. > internalDoFilter(ApplicationFilterChain.java:303) > at org.apache.catalina.core.ApplicationFilterChain.doFilter( > ApplicationFilterChain.java:208) > at org.apache.catalina.core.ApplicationDispatcher.invoke( > ApplicationDispatcher.java:748) > at org.apache.catalina.core.ApplicationDispatcher.doInclude( > ApplicationDispatcher.java:604) > at org.apache.catalina.core.ApplicationDispatcher.include( > ApplicationDispatcher.java:543) > at org.apache.jasper.runtime.JspRuntimeLibrary.include( > JspRuntimeLibrary.java:954) > at org.apache.jasper.runtime.PageContextImpl.include( > PageContextImpl.java:656) > at org.apache.wiki.tags.IncludeTag.doEndTag(IncludeTag.java:84) > at org.apache.jsp.Wiki_jsp._jspService(Wiki_jsp.java:122) > at org.apache.jasper.runtime.HttpJspBase.service( > HttpJspBase.java:70) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) > at org.apache.jasper.servlet.JspServletWrapper.service( > JspServletWrapper.java:432) > at org.apache.jasper.servlet.JspServlet.serviceJspFile( > JspServlet.java:390) > at org.apache.jasper.servlet.JspServlet.service(JspServlet. > java:334) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) > at org.apache.catalina.core.ApplicationFilterChain. > internalDoFilter(ApplicationFilterChain.java:303) > at org.apache.catalina.core.ApplicationFilterChain.doFilter( > ApplicationFilterChain.java:208) > at org.apache.tomcat.websocket.server.WsFilter.doFilter( > WsFilter.java:52) > at org.apache.catalina.core.ApplicationFilterChain. > internalDoFilter(ApplicationFilterChain.java:241) > at org.apache.catalina.core.ApplicationFilterChain.doFilter( > ApplicationFilterChain.java:208) > at org.apache.wiki.ui.WikiServletFilter.doFilter( > WikiServletFilter.java:177) > at org.apache.wiki.ui.WikiJSPFilter.doFilter( > WikiJSPFilter.java:121) > at org.apache.catalina.core.ApplicationFilterChain. > internalDoFilter(ApplicationFilterChain.java:241) > at org.apache.catalina.core.ApplicationFilterChain.doFilter( > ApplicationFilterChain.java:208) > at org.apache.catalina.core.StandardWrapperValve.invoke( > StandardWrapperValve.java:220) > at org.apache.catalina.core.StandardContextValve.invoke( > StandardContextValve.java:122) > at org.apache.catalina.authenticator.AuthenticatorBase.invoke( > AuthenticatorBase.java:610) > at org.apache.catalina.core.StandardHostValve.invoke( > StandardHostValve.java:170) > at org.apache.catalina.valves.ErrorReportValve.invoke( > ErrorReportValve.java:98) > at org.apache.catalina.authenticator.SingleSignOn. > invoke(SingleSignOn.java:339) > at org.apache.catalina.valves.AccessLogValve.invoke( > AccessLogValve.java:950) > at org.apache.catalina.core.StandardEngineValve.invoke( > StandardEngineValve.java:116) > at org.apache.catalina.connector.CoyoteAdapter.service( > CoyoteAdapter.java:408) > at org.apache.coyote.http11.AbstractHttp11Processor.process( > AbstractHttp11Processor.java:1040) > at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler. > process(AbstractProtocol.java:607) > at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor. > doRun(NioEndpoint.java:1721) > at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor. > run(NioEndpoint.java:1679) > at java.util.concurrent.ThreadPoolExecutor.runWorker( > ThreadPoolExecutor.java:1145) > at java.util.concurrent.ThreadPoolExecutor$Worker.run( > ThreadPoolExecutor.java:615) > at java.lang.Thread.run(Thread.java:744) > > <and-so-on/> > > > I wonder whether "war surgery" is an inevitable consequence of having > contributed plugins that are not distributed inside the jspwiki war file? I > don't think my plugin is unusual by needing additional css styles and tags, > as well as the plugin itself. At the moment, these all need to be grafted > into the deployed webapp directory structure. > > Sorry to be a nuisance, > > Brian >