https://bz.apache.org/bugzilla/show_bug.cgi?id=65599

Konstantin Kolinko <knst.koli...@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Resolution|INVALID                     |WONTFIX

--- Comment #2 from Konstantin Kolinko <knst.koli...@gmail.com> ---
Additional notes:
1. This is reproducible with Tomcat 8.5.72 (RC) and Java 17.0.0

a) The following unit test is failing (for all connectors):
org.apache.catalina.mapper.TestMapperWebapps

b) In the examples web application the following pages are failing to compile:
Servlet Examples -> async1 and async3
JSP Examples -> Include
http://localhost:8080/examples/async/async1
http://localhost:8080/examples/async/async3
http://localhost:8080/examples/jsp/include/include.jsp

All other pages are OK.


2. Looking the "Include" page example, when the error occurs,
there are TWO errors that are logged:

a) In localhost.*.log

The same error message, as seen on the failing JSP page,
[[[
02-Oct-2021 18:19:06.305 SEVERE [http-nio-8080-exec-1]
org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for
servlet [jsp] in context with path [/examples] threw exception [Unable to
compile class for JSP: 

An error occurred at line: [17] in the jsp file: [/jsp/include/foo.jsp]
System cannot be resolved
14:   See the License for the specific language governing permissions and
15:   limitations under the License.
16: 
17: --%><%= System.currentTimeMillis() %>


Stacktrace:] with root cause
 org.apache.jasper.JasperException: Unable to compile class for JSP: 

An error occurred at line: [17] in the jsp file: [/jsp/include/foo.jsp]
System cannot be resolved
14:   See the License for the specific language governing permissions and
15:   limitations under the License.
16: 
17: --%><%= System.currentTimeMillis() %>


Stacktrace:
  at
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:101)
  at
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:213)
  at org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:556)
  at org.apache.jasper.compiler.Compiler.compile(Compiler.java:380)
  at org.apache.jasper.compiler.Compiler.compile(Compiler.java:350)
  at org.apache.jasper.compiler.Compiler.compile(Compiler.java:334)
  at
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:597)
  at
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:398)
  at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:383)
  at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:331)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:764)
  at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
  at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
  at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
  at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
  at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
  at
org.apache.catalina.filters.HttpHeaderSecurityFilter.doFilter(HttpHeaderSecurityFilter.java:126)
  at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
  at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
  at
org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:109)
  at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
  at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
  at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:196)
  at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
  at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)
  at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)
  at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
  at
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:698)
  at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
  at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:364)
  at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:624)
  at
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
  at
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:831)
  at
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1650)
  at
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
  at
org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
  at
org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
  at
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
  at java.base/java.lang.Thread.run(Thread.java:833)
]]]


b) In catalina.*.log there is an additional error that is logged AT THE SAME
time,

[[[
02-Oct-2021 18:19:06.305 SEVERE [http-nio-8080-exec-1]
org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() для
сервлета [jsp] в контексте с путем [/examples] выбросил исключение [Unable to
compile class for JSP: 

An error occurred at line: [17] in the jsp file: [/jsp/include/foo.jsp]
System cannot be resolved
14:   See the License for the specific language governing permissions and
15:   limitations under the License.
16: 
17: --%><%= System.currentTimeMillis() %>


Stacktrace:] с первопричиной
        org.apache.jasper.JasperException: Unable to compile class for JSP: 

An error occurred at line: [17] in the jsp file: [/jsp/include/foo.jsp]
System cannot be resolved
14:   See the License for the specific language governing permissions and
15:   limitations under the License.
16: 
17: --%><%= System.currentTimeMillis() %>


Stacktrace:
                at
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:101)
                at
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:213)
                at
org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:556)
                at
org.apache.jasper.compiler.Compiler.compile(Compiler.java:380)
                at
org.apache.jasper.compiler.Compiler.compile(Compiler.java:350)
                at
org.apache.jasper.compiler.Compiler.compile(Compiler.java:334)
                at
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:597)
                at
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:398)
                at
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:383)
                at
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:331)
                at javax.servlet.http.HttpServlet.service(HttpServlet.java:764)
                at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
                at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
                at
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
                at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
                at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
                at
org.apache.catalina.filters.HttpHeaderSecurityFilter.doFilter(HttpHeaderSecurityFilter.java:126)
                at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
                at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
                at
org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:109)
                at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
                at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
                at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:196)
                at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
                at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)
                at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)
                at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
                at
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:698)
                at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
                at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:364)
                at
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:624)
                at
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
                at
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:831)
                at
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1650)
                at
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
                at
org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
                at
org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
                at
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
                at java.base/java.lang.Thread.run(Thread.java:833)
]]]


3. Regarding the second error:
a) I wonder why is it logged into Tomcat-wide catalina log instead of localhost
log.
b) The message string for key "jsp.error.compilation.dependent" is missing.


4. If I define a message string (for 3.b)), I can see the name of the class
file that fails to load.

To do so:
a) I created directory lib/org/apache/jasper/resources/
b) Extracted there the LocalStrings.properties file from lib/jasper.jar (from
org/apache/jasper/resources/ within it)
c) Added the following line to the file:
jsp.error.compilation.dependent=The "jsp.error.compilation.dependent" error for
class [{0}]

With this change the error message above changes to be

[[[
02-Oct-2021 18:19:06.264 SEVERE [http-nio-8080-exec-1]
org.apache.jasper.compiler.JDTCompiler$1.findType The
"jsp.error.compilation.dependent" error for class [java.lang.System]
        org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException
                at
org.eclipse.jdt.internal.compiler.classfmt.ClassFileReader.<init>(ClassFileReader.java:406)
                at
org.apache.jasper.compiler.JDTCompiler$1.findType(JDTCompiler.java:231)
                at
org.apache.jasper.compiler.JDTCompiler$1.findType(JDTCompiler.java:207)

]]]


5. Concluding,
So this means that the compiler tries to read the java.lang.System class and
fails.
There is nothing that we can do to workaround that failure in Tomcat / Jasper
code.

The only feasible approach is to suggest upgrading the bundled compiler,
as Mark answered in Comment 1.

I am changing resolution from INVALID to WONTFIX, as this is something that
needs to be documented.
Improving the error handling (3.b)) is a separate issue.

-- 
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to