[英]java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file “name of class”
[英]java.lang.ClassFormatError: Invalid method Code length 75567 in class file
給聰明人的問候
我正在使用cobertura以及mockito和powermocktio來獲取代碼覆蓋率。 我的機器上安裝了1.7 Java版本。
當我在Eclipse中運行junit測試用例時,所有測試用例都通過了。 但是當我跑步時
mvn cobertura:cobertura
我收到以下錯誤。
java.lang.ClassFormatError:類文件中無效的方法代碼長度75567
經過研究,我知道這是由於JVM為一個方法分配的內存大小。
我的測試類引用的是一個具有很大靜態方法的遺留類。 由於受到如此多的影響,我無法接觸傳統或主要的耐火材料。
任何在不接觸主類的情況下擺脫這種例外的想法將不勝感激。
感謝Pradeep
很簡單,將遺留類從Cobertura儀器中排除。 使用Maven時,類似以下內容:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
<version>2.6</version>
<configuration>
<instrumentation>
<excludes>
<exclude>aaa/**/Legacy.class</exclude>
</excludes>
</instrumentation>
</configuration>
</plugin>
您可以嘗試為測試環境禁用字節碼驗證(通過將-noverify添加到JVM啟動選項)。
當然,這不是在生產環境中應該執行的操作; 但鑒於您的要求,這可能是您必須進行測試和覆蓋的唯一機會。
但是,然后:為更多丑陋的意外做好准備。 Powermock(ito)對於打破覆蓋范圍測量是“著名的”。 實際上,我認為您獲得這樣的設置以可靠地工作並創建可靠的覆蓋范圍的機會很小 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.