Dee*_*ain 5 java jsp tomcat rhel
当我点击"查看"按钮查看用户详细信息时,我们面临以下异常:
2017-06-30 19:23:52,831 ERROR [com.myapp.jsp] - <Unable to compile class for JSP: 
An error occurred at line: 53 in the jsp file: /WEB-INF/jsps/ViewUserDetails.jsp
apache cannot be resolved or is not a field
50:                     </myapphtml:myappRow>
51:                                         
52:                     <myapphtml:myappRow align="left" label="userdetails.field.label.orgs">
53:                         <logic:iterate name="userDetails" property="Orgs" id="org">         
54:                              <bean:write name="org" property="name" /><br>
55:                         </logic:iterate>
56:                     </myapphtml:myappRow>
Stacktrace:>
org.apache.jasper.JasperException: Unable to compile class for JSP: 
An error occurred at line: 53 in the jsp file: /WEB-INF/jsps/ViewUserDetails.jsp
apache cannot be resolved or is not a field
50:                     </myapphtml:myappRow>
51:                                         
52:                     <myapphtml:myappRow align="left" label="userdetails.field.label.orgs">
53:                         <logic:iterate name="userDetails" property="mappedOrgs" id="org">           
54:                              <bean:write name="org" property="name" /><br>
55:                         </logic:iterate>
56:                     </myapphtml:myappRow>
Stacktrace:
    at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:103)
    at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:366)
    at org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:490)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:379)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:354)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:341)
    at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:662)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:364)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    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.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:743)
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:485)
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:410)
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:337)
    at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1063)
    at org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:263)
    at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:386)
    at org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:318)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:229)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
    at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    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 at com.myapp.tools.auth.client.AuthFilter.doFilter(AuthFilter.java:512)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at com.myapp.tools.auth.client.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:90)
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:218)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:506)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:962)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1115)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)
这仅在RHEL 7.x和Tomcat组合的组合中发生.除此之外,我无法再组合重现此问题.
附加ViewUserDetails.jsp
<%@ page import="org.apache.struts.Globals" %>
<%@ page import="com.myapp.tools.api.impl.User" %>
<%@ include file="include/commonDef.jspf" %>
<tiles:insert definition="myapp.csd.office.layout.default">
    <tiles:put name="header" type="String">
        <myapphtml:myappPageHeaderTab headerImage="images/default/icn_user.gif" headerText="form.page.title.user_details"/>
    </tiles:put>
    <tiles:put name="content" type="String">
        <myapphtml:myappBlock>
            <myapphtml:myappMessage
                    genErrorKey="<%= myappGlobals.GENERAL_ERROR %>"
                    valErrorKey="<%= Globals.ERROR_KEY %>"
                    genErrorHeading="MC.General.genError"
                    valErrorHeading="MC.General.genError"
                    headingBundle="myappBASETAG"/>
        </myapphtml:myappBlock>
        <strutshtml:form action="/processUserList.do" method="POST">
            <input type="hidden" name="action" value="" />
                    <myapphtml:myappRow align="left" label="userdetails.field.label.orgs">
                        <logic:iterate name="userDetails" property="Orgs" id="org">         
                             <bean:write name="org" property="name" /><br>
                        </logic:iterate>
                    </myapphtml:myappRow>
            <myapphtml:myappButtonRow formname="UserDetailsForm">
                <myapphtml:myappButton action="cancel" name="form.button.label.cancel" buttonStyle="button_gt" />           
            </myapphtml:myappButtonRow>         
        </strutshtml:form>
    </tiles:put>
</tiles:insert>
尝试查看是否有一个名为的字符串,org将其更改为其他名称 as org1。
参见答案。
字符串组织=“”;jsp 中类似这样的东西位于 package 语句的顶部。将该变量名称更改为 org1 或其他有意义的名称,您的问题将得到解决。
Tomcat 中有一个已知问题,其编译器将此解释为对对象 org 的字段 apache 的引用
该代码可以在 TC4 中运行,因为生成的代码要简单得多 - 它忽略了许多可能的错误情况。TC5 和 TC6 中这些问题的修复包括对 org.apache.jasper.runtime.JspRuntimeLibrary.URLEncode() 的完全限定引用
编译器将此解释为对对象 org 的字段 apache 的引用。
当您生成代码时,总是存在命名冲突的可能性。我看不出有什么简单的方法可以解决这个问题。
我将把它标记为 WONTFIX。更一般地说,避免使用广泛使用的包前缀(org、com 等)作为变量名将降低遇到此问题的风险。
顺便说一句,快速谷歌建议您可能还希望避免与顶级域冲突的 2 个字母变量名称。
请注意,RHEL使用特定的 tomcat 版本,而不是社区版本。
不支持 Tomcat 的任何社区版本
我们的产品中包含 Tomcat 支持的版本:
RHEL 7.1 中包含 Tomcat rpm 软件包,该软件包基于 Tomcat 7.0.54。
请注意,当出现问题或报告 CVE 时,我们会向后移植上述版本的关键错误和安全修复。因此,我们提供的版本与Tomcat的社区版本并不完全相同。
| 归档时间: | 
 | 
| 查看次数: | 1388 次 | 
| 最近记录: |