2017-08-04 3 views
0

Wir haben gerade von IBM Websphere 7 (Java 1.6) zu Websphere 9 (Java 1.8) migriert. Ich bin vor Problem mit Lang Gießen, Code bricht beim Laden jsp, Code-Snippet (Dieser Code in JSP geschrieben):java.lang.Exception: java.lang.VerifyError: JVMVRFY012 Stapelform inkonsistent;

 long caseNum = 0L, empid = 0L; 
     Long employeeId; 


      employeeId = ((Long) request.getAttribute("EMPID") == null) ? 0L 
        : (Long) request.getAttribute("EMPID"); 
      empid = employeeId.longValue(); 

Unten ist der Stapel strace,

java.lang. Ausnahme: java.lang.VerifyError: JVMVRFY012 Stapelform inkonsistent; class = com/ibm/_jsp/_TMTSSTaskSummary, method = _jspService (Ljavax/Servlet/http/HttpServletRequest; Ljavax/Servlet/http/HttpServletResponse;) V, pc = 13805 Ausnahmedetails: Ort: com/ibm/_jsp /_TMTSSTaskSummary._jspService(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V @ 13805: JBifnull Grund: Typ top (aktueller Frame, lokale [120]) kann nicht zugeordnet werden "Java/lang/Long '(stack map, Einheimische [120]) Aktueller Frame: bci: @ 13805 flags: {} Einheimische: {' com/ibm/_jsp/_TMTSSTaskSummary ',' javax/servlet/http/HttpServletRequest ', 'javax/servlet/http/HttpServletResponse', 'javax/servlet/jsp/Seitenkontext', 'javax/servlet/http/HttpSession', 'javax/servlet/Serv letContext, javax/servlet/ServletConfig, javax/servlet/jsp/JspWriter, java/lang/Object, javax/servlet/jsp/JspWriter, com/presentation/view/pageelements/SecurityAttr , 'java/lang/String', Ganzzahl, 'java/lang/String', 'javax/servlet/http/HttpSession', 'java/lang/String', 'java/lang/String', ganze Zahl, ganze Zahl ' java/util/Map ', ganze Zahl,' java/lang/String ', ganze Zahl,' java/lang/String ',' java/lang/String ', ganze Zahl, ganze Zahl, ganze Zahl, ganze Zahl,' java/lang/Schnur ' , 'java/lang/Zeichenfolge', 'java/lang/Zeichenfolge', 'java/lang/Zeichenfolge', 'java/lang/Objekt', 'java/lang/Objekt', 'java/lang/Objekt', ' java/lang/String ',' java/lang/Objekt ',' java/lang/String ',' java/lang/Objekt ',' java/lang/String ',' java/lang ',' 2017-08- 04 15: 26: 47.067 ',' 0 ',' A ',' TMTSS ~ 100: Unbekannter Fehler ',' 859469 ',' 518722 ',' null ',' null ')

Kann jemand irgendeine Lösung vorschlagen dafür. Ich lese über die Verwendung von Splitverify, aber es funktioniert mit AspectJ. Gibt es eine andere Lösung?

+0

haben Sie das bitte gelöst? – rainman

Antwort

2

Es scheint mir, dass

  1. Sie versuchen, ein Null-Objekt typisieren, die einen Fehler oder

    hebt
    long caseNum = 0L, empid = 0L; 
    Long employeeId; 
    
    
        employeeId = (request.getAttribute("EMPID") == null) ? 0L 
          : (Long) request.getAttribute("EMPID"); 
        empid = employeeId.longValue(); 
    
  2. Sie versuchen, eine Zeichenfolge oder ein anderes Objekt zu gieße Lange. Im Fall ist es Zeichenkette verwenden Long.parseLong()

    employeeId = (request.getAttribute("EMPID") == null) ? 0L 
          : Long.parseLong(request.getAttribute("EMPID")); 
        empid = employeeId.longValue(); 
    

Auch ein allgemeinen Ratschläge, die Sie nicht wirklich brauchen lange employeeId zu verwenden, um lange auto-unboxing umwandeln sollten damit umgehen.

+0

Ich benutze einen ternären Operator, so dass kein Null-Objekt-Problem auftritt. –

1

Es scheint zu Java 7 Kompatibilitätsproblem zu sein .. In Jdk 7 können Sie -XX: -UseSplitVerifier verwenden. Und wenn Sie JDK 8 -XX verwenden: -UseSplitVerifier ist veraltet und ersetzt durch -noverify. Ich habe -noverify zu jvm Argument hinzugefügt und es hat mein Problem gelöst.

Verwandte Themen