2016-07-08 85 views
0

當前,我將Maven Java代碼從jdk7移動到jdk8,它使用兵馬俑,並且工作正常,但在將其更改爲jdk8後,我的測試用例正在失敗。我得到以下錯誤,我沒有通過搜索得到任何線索。使用JDK 8和兵馬俑的java.lang.ArrayIndexOutOfBoundsException:28526的測試用例失敗3.4.0

java.lang.ArrayIndexOutOfBoundsException: 28526 
at com.tc.asm.ClassReader.readClass(ClassReader.java:2015) 
at com.tc.asm.ClassReader.getClassName(ClassReader.java:229) 
at com.tc.aspectwerkz.reflect.impl.asm.AsmClassInfo.getClassInfo(AsmClassInfo.java:305) 
at com.tc.aspectwerkz.reflect.impl.asm.AsmClassInfo.createClassInfoFromStream(AsmClassInfo.java:717) 
at com.tc.aspectwerkz.reflect.impl.asm.AsmClassInfo.getClassInfo(AsmClassInfo.java:256) 
at com.tc.aspectwerkz.reflect.impl.asm.AsmClassInfo.getInterfaces(AsmClassInfo.java:558) 
at com.tc.aspectwerkz.expression.regexp.TypePattern.matchInterfaces(TypePattern.java:147) 
at com.tc.aspectwerkz.expression.regexp.TypePattern.matchInterfaces(TypePattern.java:147) 
at com.tc.aspectwerkz.expression.regexp.TypePattern.matchSuperClasses(TypePattern.java:120) 
at com.tc.aspectwerkz.expression.regexp.TypePattern.matchType(TypePattern.java:92) 
at com.tc.aspectwerkz.expression.ExpressionVisitor.visit(ExpressionVisitor.java:437) 
at com.tc.aspectwerkz.expression.ast.ASTClassPattern.jjtAccept(ASTClassPattern.java:24) 
at com.tc.aspectwerkz.expression.ExpressionVisitor.visitAnnotatedNode(ExpressionVisitor.java:1016) 
at com.tc.aspectwerkz.expression.ExpressionVisitor.visit(ExpressionVisitor.java:237) 
at com.tc.aspectwerkz.expression.ast.ASTWithin.jjtAccept(ASTWithin.java:22) 
at com.tc.aspectwerkz.expression.ExpressionVisitor.visit(ExpressionVisitor.java:100) 
at com.tc.aspectwerkz.expression.ast.ASTExpression.jjtAccept(ASTExpression.java:22) 
at com.tc.aspectwerkz.expression.ExpressionVisitor.visit(ExpressionVisitor.java:88) 
at com.tc.aspectwerkz.expression.ExpressionVisitor.match(ExpressionVisitor.java:74) 
at com.tc.object.config.ClassExpressionMatcherImpl.match(ClassExpressionMatcherImpl.java:24) 
at com.tc.object.config.CompoundExpressionMatcher.match(CompoundExpressionMatcher.java:18) 
at com.tc.object.config.StandardDSOClientConfigHelperImpl.shouldBeAdapted(StandardDSOClientConfigHelperImpl.java:1242) 
at com.tc.object.bytecode.hook.impl.DefaultWeavingStrategy.transformInternal(DefaultWeavingStrategy.java:184) 
at com.tc.object.bytecode.hook.impl.DefaultWeavingStrategy.transform(DefaultWeavingStrategy.java:134) 
at com.tc.object.bytecode.hook.impl.DSOContextImpl.preProcess(DSOContextImpl.java:288) 
at com.tc.object.bytecode.hook.impl.DSOContextImpl.transform(DSOContextImpl.java:392) 
at org.terracotta.express.ClusteredStateLoader.transform(ClusteredStateLoader.java:124) 
at org.terracotta.express.ClusteredStateLoader.loadClass(ClusteredStateLoader.java:83) 
at org.terracotta.modules.ehcache.store.TerracottaClusteredInstanceFactory$1.call(TerracottaClusteredInstanceFactory.java:319) 
at org.terracotta.modules.ehcache.store.TerracottaClusteredInstanceFactory$1.call(TerracottaClusteredInstanceFactory.java:317) 
at org.terracotta.api.Terracotta.lookupOrCreateRoot(Terracotta.java:47) 
at org.terracotta.modules.ehcache.store.TerracottaClusteredInstanceFactory.getStoreRoot(TerracottaClusteredInstanceFactory.java:316) 
at org.terracotta.modules.ehcache.store.TerracottaClusteredInstanceFactory.getStoreMapForCacheManager(TerracottaClusteredInstanceFactory.java:77) 
at org.terracotta.modules.ehcache.store.TerracottaClusteredInstanceFactory.getOrCreateStore(TerracottaClusteredInstanceFactory.java:68) 
at org.terracotta.modules.ehcache.store.TerracottaClusteredInstanceFactory.createStore(TerracottaClusteredInstanceFactory.java:64) 
at net.sf.ehcache.terracotta.StandaloneTerracottaClusteredInstanceFactory.createStore(StandaloneTerracottaClusteredInstanceFactory.java:40) 

謝謝

+0

它似乎來自一個錯誤的匹配模式:aspectwerkz.expression.regexp.TypePattern.matchInterfaces(TypePattern.java:147),如果你起牀似乎來自你的配置:StandardDSOClientConfigHelperImpl,這是我唯一可以做的事情給。需要更多信息 – Destrif

+0

感謝您的回覆。我在eclipse中運行性能測試用例並得到這個異常,請讓我知道是否需要其他信息。 – user2183017

+0

我會說,將您的Terracotta版本更新爲符合Java 8標準的版本。第一次谷歌命中:http://forums.terracotta.org/forums/posts/list/11437.page(說固定介於3.7.7和3.7.10之間) – Holger

回答

0

正如在評論中一項記載,秦始皇3.4.0不是Java 8兼容並給出了舊版本秦俑的工作方式,這是不是一個驚喜。

如果您必須具有Java 8支持,則必須更新至later version

確切的版本將取決於您使用兵馬俑的用法 - 如果您需要DSO支持,您必須堅持使用3.7.x版本。 對於Ehcache支持,建議升級到4.3.x行的最新版本。