簡體   English   中英

FacesContext.getCurrentInstance() 拋出 java.lang.VerifyError: Inconsistent stackmap frames at branch target exception

[英]FacesContext.getCurrentInstance() throwing java.lang.VerifyError: Inconsistent stackmap frames at branch target exception

我已經檢查了其他 stackoverflow 的答案,但他們都沒有 JSF facescontext 的答案,所以我不得不提出一個問題。 我們有 jdk 6、jsf 1.2 和 mySQL 5.5,現在我們已經升級到 java 8 和 mySQL 5.7。 為此,我將 mySql-connector jar 從 3.1.11 替換為 5.1.18。 但是當我啟動tomcat時,它拋出如下異常:

SEVERE: Exception sending context initialized event to listener instance of class [com.sun.faces.config.ConfigureListener]
java.lang.VerifyError: Inconsistent stackmap frames at branch target 922
Exception Details:
  Location:
    web/clerk/webapp/iucs/officer/bean/OfficerScheduleBean.addOfficerSchedule()Ljava/lang/String; @922: invokestatic
  Reason:
    Type top (current frame, locals[41]) is not assignable to integer (stack map, locals[41])
  Current Frame:
    bci: @904
    flags: { }
    locals: { 'web/clerk/webapp/iucs/officer/bean/OfficerScheduleBean', 'java/lang/String', 'java/io/InputStream', 'java/util/List', 'java/io/BufferedReader', 'javax/servlet/http/HttpSession', 'web/clerk/webapp/iucs/userprofile/pojo/UserProfile', 'java/util/Map', 'java/util/List', 'web/clerk/webapp/iucs/officer/pojo/OfficerSchedule', 'java/lang/String', '[Ljava/lang/String;', integer, integer, 'java/util/Map', 'java/util/Set', integer, integer, 'web/clerk/webapp/iucs/officer/pojo/OfficerSchedule', 'java/util/Iterator', 'java/util/List', 'web/clerk/webapp/iucs/schedule/pojo/CourtType', 'web/clerk/webapp/iucs/schedule/pojo/Location', 'java/lang/String', 'java/lang/String', 'java/lang/String', 'java/lang/String', 'java/lang/String', 'web/clerk/webapp/iucs/general/pojo/County', 'java/lang/String', integer, top, 'web/clerk/webapp/iucs/general/pojo/County', 'web/clerk/webapp/iucs/officer/pojo/OfficerSchedule', integer, integer, integer, integer, integer, integer }
    stack: { 'web/clerk/webapp/iucs/general/pojo/County' }
  Stackmap Frame:
    bci: @922
    flags: { }
    locals: { 'web/clerk/webapp/iucs/officer/bean/OfficerScheduleBean', 'java/lang/String', 'java/io/InputStream', 'java/util/List', 'java/io/BufferedReader', 'javax/servlet/http/HttpSession', 'web/clerk/webapp/iucs/userprofile/pojo/UserProfile', 'java/util/Map', 'java/util/List', 'web/clerk/webapp/iucs/officer/pojo/OfficerSchedule', 'java/lang/String', '[Ljava/lang/String;', integer, integer, 'java/util/Map', 'java/util/Set', integer, integer, 'web/clerk/webapp/iucs/officer/pojo/OfficerSchedule', 'java/util/Iterator', 'java/util/List', 'web/clerk/webapp/iucs/schedule/pojo/CourtType', 'web/clerk/webapp/iucs/schedule/pojo/Location', 'java/lang/String', 'java/lang/String', 'java/lang/String', 'java/lang/String', 'java/lang/String', 'web/clerk/webapp/iucs/general/pojo/County', 'java/lang/String', integer, top, 'web/clerk/webapp/iucs/general/pojo/County', 'web/clerk/webapp/iucs/officer/pojo/OfficerSchedule', integer, integer, integer, integer, integer, integer, top, integer }
    stack: { }
  Bytecode:
    0x0000000: bb00 a559 2ab6 00a7 b600 adb8 00b2 b700
    0x0000010: b813 0720 b600 bcb6 00c0 b800 c312 fb4c
    0x0000020: 2ab6 0722 c600 112a b607 22b9 05c4 0100
    0x0000030: 0994 9a00 2a13 0725 12fb b802 ecbb 00a5
    0x0000040: 592a b600 a7b6 00ad b800 b2b7 00b8 1307.....

挖掘代碼,我發現了里面的錯誤方法, FacesContext.getCurrentInstance(); 代碼出錯。 當我檢查相應的jar時,它指向jsf-api.jar。 現在我知道一個這樣的解決方案是向 VM 添加-noverify參數,但是,這可能是一個查看我的生產環境的補丁,我無法弄清楚根本原因是什么,解決方案是什么?

找到正確的論點:實際上我嘗試從安全模式將webdir添加到環境變量,但它也不起作用。 所以我刪除了它並將-Xverify:none添加到 tomcat 的參數中,它開始工作。

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM