After moving the class WikiPage to the package org.apache.jspwiki.api we started getting NoClassDefFoundErrors for this class if it is referenced from JSP's.
References from other classes gives no problem.
See stacktrace at the bottom
The strange thing is that the JSP can be compiled, but if it is invoked it gets the NCDFE.
I have tried the following to diagnose the problem :
| action | result |
|---|---|
| used the binary download from jspwiki.org (instead of build in Eclipse | No Success |
| move WikiPage back to the old package com.ecyrd.jspwiki | Success |
| installed in Glassfish (instead of Tomcat) | No Success |
| installed in Geronimo (intead of Tomcat) | No Success |
| installed in WebSphere 6.1 (intead of Tomcat) | No Success (NPE in Stripes, not further diagnosed) |
| run in webtests/Jetty | No Success, cant find logfile but the Firefox screen look similar |
| put org.apache.jspwiki.api classes in separate jar file | No Success |
| ran Tomcat with -verbose:class | No Success, no clue, the WikiPage is loaded from JSPWiki.jar, no strange things noticed |
| rename package org.apache.jspwiki.api to org2.apache.jspwiki.api | Success |
| rename package org.apache.jspwiki.api to org.apache2.jspwiki.api | Success |
| rename package org.apache.jspwiki.api to org.apache.jspwiki2.api | No Succes => hehe => has org.apache restrictions ?! |
Another strange thing is when you run the ant target compile-tomcat, it fails with :
[javac] Compiling 25 source files to /home/metskem/workspace/JSPWiki/build/jsp-classes
[javac] /home/metskem/workspace/JSPWiki/build/jsp-java/org/apache/jsp/templates/default_/InfoContent_jsp.java:772: cannot find symbol
[javac] symbol : class WikiPage
[javac] location: package com.ecyrd.jspwiki
[javac] com.ecyrd.jspwiki.WikiPage currentPage = null;
[javac] ^
[javac] /home/metskem/workspace/JSPWiki/build/jsp-java/org/apache/jsp/templates/default_/InfoContent_jsp.java:779: cannot find symbol
[javac] symbol : class WikiPage
[javac] location: package com.ecyrd.jspwiki
[javac] currentPage = (com.ecyrd.jspwiki.WikiPage) _jspx_page_context.findAttribute("currentPage");
[javac] ^
[javac] /home/metskem/workspace/JSPWiki/build/jsp-java/org/apache/jsp/templates/default_/InfoContent_jsp.java:865: cannot find symbol
[javac] symbol : class WikiPage
[javac] location: package com.ecyrd.jspwiki
[javac] currentPage = (com.ecyrd.jspwiki.WikiPage) _jspx_page_context.findAttribute("currentPage");
[javac] ^
[javac] /home/metskem/workspace/JSPWiki/build/jsp-java/org/apache/jsp/templates/default_/InfoContent_jsp.java:1258: cannot find symbol
[javac] symbol : class WikiPage
[javac] location: package com.ecyrd.jspwiki
[javac] com.ecyrd.jspwiki.WikiPage att = null;
[javac] ^
[javac] /home/metskem/workspace/JSPWiki/build/jsp-java/org/apache/jsp/templates/default_/InfoContent_jsp.java:1265: cannot find symbol
[javac] symbol : class WikiPage
[javac] location: package com.ecyrd.jspwiki
[javac] att = (com.ecyrd.jspwiki.WikiPage) _jspx_page_context.findAttribute("att");
[javac] ^
[javac] /home/metskem/workspace/JSPWiki/build/jsp-java/org/apache/jsp/templates/default_/InfoContent_jsp.java:1373: cannot find symbol
[javac] symbol : class WikiPage
[javac] location: package com.ecyrd.jspwiki
[javac] att = (com.ecyrd.jspwiki.WikiPage) _jspx_page_context.findAttribute("att");
[javac] ^
[javac] Note: /home/metskem/workspace/JSPWiki/build/jsp-java/org/apache/jsp/templates/default_/PreferencesTab_jsp.java uses unchecked or unsafe operations.
[javac] Note: Recompile with -Xlint:unchecked for details.
[javac] 6 errors
BUILD FAILED
/home/metskem/workspace/JSPWiki/build.xml:1062: Compile failed; see the compiler error output for details.
Total time: 11 seconds
Where the f... does this com.ecyrd.jspwiki.WikiPage come from ?
INFO: Server startup in 33767 ms Dec 30, 2008 7:47:47 PM org.apache.catalina.core.ApplicationContext log INFO: No jspwiki.propertyfile defined for this context, using default from /WEB-INF/jspwiki.properties Dec 30, 2008 7:47:47 PM org.apache.catalina.core.ApplicationContext log INFO: Loading cascading properties... Dec 30, 2008 7:47:47 PM org.apache.catalina.core.ApplicationContext log INFO: No cascading properties defined for this context Dec 30, 2008 7:47:48 PM org.apache.catalina.core.ApplicationDispatcher invoke SEVERE: Servlet.service() for servlet jsp threw exception java.lang.ClassNotFoundException: org.apache.jspwiki.api.WikiPage at java.net.URLClassLoader$1.run(URLClassLoader.java:217) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:205) at org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:134) at org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:66) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:336) at org.apache.jsp.templates.default_.PageTab_jsp._jspService(PageTab_jsp.java:116) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:630) at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:535) at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:472) at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:968) at org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:609) at com.ecyrd.jspwiki.tags.IncludeTag.doEndTag(IncludeTag.java:84) at org.apache.jsp.templates.default_.PageContent_jsp._jspx_meth_wiki_005fInclude_005f0(PageContent_jsp.java:387) at org.apache.jsp.templates.default_.PageContent_jsp._jspService(PageContent_jsp.java:141) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:630) at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:535) at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:472) at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:968) at org.apache.jsp.Wiki_jsp._jspx_meth_stripes_005flayout_002dcomponent_005f0(Wiki_jsp.java:163) at org.apache.jsp.Wiki_jsp._jspx_meth_stripes_005flayout_002drender_005f0(Wiki_jsp.java:122) at org.apache.jsp.Wiki_jsp._jspService(Wiki_jsp.java:84) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at net.sourceforge.stripes.controller.StripesFilter.doFilter(StripesFilter.java:246) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.ecyrd.jspwiki.ui.WikiServletFilter.doFilter(WikiServletFilter.java:183) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:568) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Thread.java:636) 2008-12-30 19:47:48,982 [http-8080-1] WARN com.ecyrd.jspwiki.tags.WikiTagBase - 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: org/apache/jspwiki/api/WikiPage at org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:522) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:398) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:630) at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:535) at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:472) at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:968) at org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:609) at com.ecyrd.jspwiki.tags.IncludeTag.doEndTag(IncludeTag.java:84) at org.apache.jsp.templates.default_.PageContent_jsp._jspx_meth_wiki_005fInclude_005f0(PageContent_jsp.java:387) at org.apache.jsp.templates.default_.PageContent_jsp._jspService(PageContent_jsp.java:141) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:630) at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:535) at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:472) at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:968) at org.apache.jsp.Wiki_jsp._jspx_meth_stripes_005flayout_002dcomponent_005f0(Wiki_jsp.java:163) at org.apache.jsp.Wiki_jsp._jspx_meth_stripes_005flayout_002drender_005f0(Wiki_jsp.java:122) at org.apache.jsp.Wiki_jsp._jspService(Wiki_jsp.java:84) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at net.sourceforge.stripes.controller.StripesFilter.doFilter(StripesFilter.java:246) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.ecyrd.jspwiki.ui.WikiServletFilter.doFilter(WikiServletFilter.java:183) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:568) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Thread.java:636) Caused by: javax.servlet.ServletException: java.lang.NoClassDefFoundError: org/apache/jspwiki/api/WikiPage at org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:850) at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:779) at org.apache.jsp.templates.default_.PageTab_jsp._jspService(PageTab_jsp.java:458) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374) ... 53 more Caused by: java.lang.NoClassDefFoundError: org/apache/jspwiki/api/WikiPage at org.apache.jsp.templates.default_.PageTab_jsp._jspService(PageTab_jsp.java:116) ... 56 more Caused by: java.lang.ClassNotFoundException: org.apache.jspwiki.api.WikiPage at java.net.URLClassLoader$1.run(URLClassLoader.java:217) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:205) at org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:134) at org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:66) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:336)