2017-07-10 3 views
4

Wir stehen vor der folgende Ausnahme kompilieren, wenn ich auf Schaltfläche Ansicht klicken, um die Benutzerdaten zu sehen:kann nicht die Klasse für JSP

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:        &nbsp;<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:        &nbsp;<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) 

Dies geschieht nur in der Kombination von RHEL 7.x und Tomcat-Kombination. Ich bin nicht in der Lage, dieses Problem in Kombination anders als dieses zu reproduzieren.

Anbringen der 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">   
          &nbsp;<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> 

Antwort

2

Versuch zu sehen, wenn Sie einen String haben org Änderung an andere Namen als org1 genannt.

Siehe answer.

String org = ""; etwas wie das in Jsp irgendwo auf der Oberseite von diese Paket-Anweisung. Ändern Sie den Variablennamen in org1 oder anderen sinnvollen und Ihr Problem wird gelöst.

Es gibt eine known issue in Tomcat, die ihren Compiler dies als Verweis auf das Feld Apache Objekt org

Der Code funktioniert in TC4 interpretiert, da der generierte Code viel einfacher ist - es ein ignoriert Anzahl der möglichen Fehlerbedingungen. Die Lösung für diese Probleme in TC5 und TC6 enthält einen voll qualifizierten Bezug auf org.apache.jasper.runtime.JspRuntimeLibrary.URLEncode()

Der complier dies als Bezugnahme auf das Feld Apache des Objekts interpretiert org .

Wenn Sie Code generiert haben, es wird immer die Möglichkeit einer Namens Zusammenstoß sein. Ich kann es nicht leicht sehen.

Ich werde dies als WONTFIX markieren. Allgemeine von weit verbreiteten Paketpräfixen die Verwendung zu vermeiden (org, com, etc.) als Variablennamen werden Ihr Risiko des Schlagens dieses Problems verringern.

Nebenbei bemerkt, schlägt ein schnelles Google vor, dass Sie auch 2 Buchstaben-Variablennamen vermeiden möchten, die mit Top-Level-Domains kollidieren.

Beachten Sie, dass RHEL eine bestimmte Tomcat-Version verwendet, die nicht als Community-Version.

Jede Gemeinschaft Versionen von Tomcat nicht

unterstützt

Die unterstützten Versionen von Tomcat sind in unseren Produkten enthalten:

Tomcat rpm-Paket enthalten in RHEL 7.1, die auf Tomcat basiert 7.0.54 .

Bitte beachten Sie, dass wir kritische Bug- und Sicherheitsupdates auf den obigen Versionen zurückgeben, wenn Probleme auftreten oder CVEs gemeldet werden.Daher sind die von uns bereitgestellten Versionen nicht genau die gleichen Community-Versionen von Tomcat.

+0

Soll ich den Wert im Jsp oder im Java-Code im Backend ändern? wenn in JSP, habe ich das versucht und hat nicht funktioniert. Es gab mir die gleiche Ausnahme mit org1. –

+0

Es löste das Problem, aber können Sie mir sagen, warum das funktioniert? Ist das Schlüsselwort "org" im Rhel oder Java oder anderswo reserviert? –

+1

Details eines bekannten Problems hinzufügen – user7294900

Verwandte Themen