2012-08-29 56 views
13

所以我得到這些錯誤Java 7的艾瑪和JUnit造成java.lang.VerifyError的及非法局部變量錯誤

[junit] Illegal local variable table length 17 in method test.nz.ac.massey.cs.sdc.log4jassignment.s06005586.AppenderLayoutTest.()V

[junit] java.lang.VerifyError: Expecting a stackmap frame at branch target 11 in method test.nz.ac.massey.cs.sdc.log4jassignment.s06005586.StressTest.()V at offset 4

[junit] java.lang.ClassFormatError: Illegal local variable table length 17 in method test.nz.ac.massey.cs.sdc.log4jassignment.s06005586.AppenderLayoutTest.()V

,我想知道我該如何解決?

我讀過:

我已經完成:

資源:

對於一些瘋狂的理由JUnit通過target="test"但失敗target="emmatest"

這是我以前也試過我試過設置的默認參數爲我java7 JRE-XX:-UseSplitVerifier在命令提示符下輸出java -version

java version "1.7.0_03" 
Java(TM) SE Runtime Environment (build 1.7.0_03-b05) 
Java HotSpot(TM) 64-Bit Server VM (build 22.1-b02, mixed mode) 

here

arguments http://iforce.co.nz/i/dvsh1eoc.n0m.png

請在Project Properties上投訴JDK 1.6

complaint http://iforce.co.nz/i/4jxuj4eb.rae.png

JUnit的直接測試的結果(在軌跡上沒有錯誤)

junit http://iforce.co.nz/i/wicrvpsi.5gw.png

我跳出選項,請幫忙! :(

回答

7

聽起來很奇怪。

首先,檢查你的代碼,看看是否你已經使用新的語法特徵,JDK 1.7介紹,像try-with-resourcediamond operator

我在使用cobertura之前遇到過這個VerifyError。但是,當我將-XX:-UseSplitVerifier設置爲junit任務時,它已解決。我通過指定一個<jvmarg> 嵌套元素到junit任務來設置它。

此外,大多數覆蓋庫似乎很支持JDK1.7。然而,Jacoco與JDK1.7協同工作,所以我現在使用它。

+0

感謝我設法解決,僅僅通過下載[JDK6u25](HTTP ://www.oracle.com/technetwork/java/javase/downloads/jdk-6u25-download-346242.html)並在我的項目/ eclipse中更改庫路徑。 – Killrawr

+0

@Killrawr高興看到!是的,降級JDK版本也是一個選擇。 – coolcfan

+1

@Killrawr最終你設法通過降級到java6來擺脫它,正如我建議:)。 – SiB

1

-XX:-UseSplitVerifier

不工作對我來說,我沒有降級JRE1.71.6