天天看點

java.lang.VerifyError: Expecting a stackmap frame at branch target

java.lang.VerifyError: 
Expecting a stackmap frame at branch target 51
Exception Details:
  Location:
    com/suning/ospos/pushapi/controller/PushAuthController.$jacocoInit()[Z @4: ifnonnull
  Reason:
    Expected stackmap frame at this location.
  Bytecode:
    0000000: b200 a259 c700 2f57 b200 a806 bd00 aa59
    0000010: 0314 00ab b800 b153 5904 12b2 5359 0510
    0000020: 28b8 00b7 535a b600 ba57 0332 c000 bb59
    0000030: b300 a2b0                              
      

背景:

java源代碼是用jdk1.6下開發的,後來環境上替換安裝了jdk1.7編譯運作。運作報錯!!!

解決方法:

在eclipse中給jdk設定參數:-XX:-UseSplitVerifier

Preferences->Java->Installed JREs->輕按兩下選擇的jdk,在彈出對話框的Default vm arguments輸入:-XX:-UseSplitVerifier

如果是LINUX 服務:

修改catalina.sh 加上

JAVA_OPTS= -XX:-UseSplitVerifier

windows:

修改catalina.bat

set JAVA_OPTS= -XX:-UseSplitVerifier

如果是 surfire 單元測試:

<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<version>2.19</version>
				<configuration>
					<includes>
						<include>**/*Test.java</include>
					</includes>
					<excludes>
						<exclude>**/*IntegrationTest.java</exclude>
					</excludes>
					<argLine>${argLine} -server -XX:PermSize=512m -XX:MaxNewSize=1024m -XX:-UseSplitVerifier</argLine>
				</configuration>
				<dependencies>
					<dependency>
						<groupId>org.apache.maven.surefire</groupId>
						<artifactId>surefire-junit47</artifactId>
						<version>2.19</version>
					</dependency>
				</dependencies>
			</plugin>