[jboss-jira] [JBoss JIRA] (JASSIST-223) Failed to transform class with name ... Reason: [source error] incompatible type for =
TeeWe Tee (JIRA)
issues at jboss.org
Sun May 11 18:47:56 EDT 2014
[ https://issues.jboss.org/browse/JASSIST-223?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12966947#comment-12966947 ]
TeeWe Tee commented on JASSIST-223:
-----------------------------------
This probably happened due to the use of the proguard obfuscator. According to their description it is perfectly valid (for bytecode):
Multiple fields and methods can then get the same names, as long as their arguments and return types are different (not just their arguments). [...] The resulting class files fall within the Java bytecode specification (cfr. The Java Virtual Machine Specification, Second Edition, first paragraphs of Section 4.5 and Section 4.6), even though this kind of overloading is not allowed in the Java language (cfr. The Java Language Specification, Second Edition, Section 8.3 and Section 8.4.7).
> Failed to transform class with name ... Reason: [source error] incompatible type for =
> ---------------------------------------------------------------------------------------
>
> Key: JASSIST-223
> URL: https://issues.jboss.org/browse/JASSIST-223
> Project: Javassist
> Issue Type: Bug
> Affects Versions: 3.18.1-GA
> Environment: Powermock 1.5.4 and Easymock 3.2
> Reporter: TeeWe Tee
> Assignee: Shigeru Chiba
> Fix For: 3.19.0-GA
>
> Attachments: PowerMock.zip, SigPadApi.class, Tester.java
>
>
> During the usage of powermock and the mocking of a class the exception below occurs. Since this is a javaassist issue I write it here.
> Any hints about the problem? Any help will be appreciated.
> java.lang.IllegalStateException: Failed to transform class with name com.company.someClass. Reason: [source error] incompatible type for =
> at org.powermock.core.classloader.MockClassLoader.loadMockClass(MockClassLoader.java:214)
> at org.powermock.core.classloader.MockClassLoader.loadModifiedClass(MockClassLoader.java:144)
> at org.powermock.core.classloader.DeferSupportingClassLoader.loadClass(DeferSupportingClassLoader.java:67)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
> at java.lang.Class.forName0(Native Method)
> at java.lang.Class.forName(Class.java:249)
> at sun.reflect.generics.factory.CoreReflectionFactory.makeNamedType(CoreReflectionFactory.java:95)
> at sun.reflect.generics.visitor.Reifier.visitClassTypeSignature(Reifier.java:107)
> at sun.reflect.generics.tree.ClassTypeSignature.accept(ClassTypeSignature.java:31)
> at sun.reflect.annotation.AnnotationParser.parseSig(AnnotationParser.java:370)
> at sun.reflect.annotation.AnnotationParser.parseClassValue(AnnotationParser.java:351)
> at sun.reflect.annotation.AnnotationParser.parseClassArray(AnnotationParser.java:653)
> at sun.reflect.annotation.AnnotationParser.parseArray(AnnotationParser.java:460)
> at sun.reflect.annotation.AnnotationParser.parseMemberValue(AnnotationParser.java:286)
> at sun.reflect.annotation.AnnotationParser.parseAnnotation(AnnotationParser.java:222)
> at sun.reflect.annotation.AnnotationParser.parseAnnotations2(AnnotationParser.java:69)
> at sun.reflect.annotation.AnnotationParser.parseAnnotations(AnnotationParser.java:52)
> at java.lang.Class.initAnnotationsIfNecessary(Class.java:3127)
> at java.lang.Class.getAnnotation(Class.java:3086)
> at org.junit.internal.MethodSorter.getDeclaredMethods(MethodSorter.java:52)
> at org.junit.internal.runners.TestClass.getAnnotatedMethods(TestClass.java:45)
> at org.junit.internal.runners.MethodValidator.validateTestMethods(MethodValidator.java:71)
> at org.junit.internal.runners.MethodValidator.validateStaticMethods(MethodValidator.java:44)
> at org.junit.internal.runners.MethodValidator.validateMethodsForDefaultRunner(MethodValidator.java:50)
> at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.validate(PowerMockJUnit44RunnerDelegateImpl.java:108)
> at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl.<init>(PowerMockJUnit44RunnerDelegateImpl.java:70)
> at org.powermock.modules.junit4.internal.impl.PowerMockJUnit47RunnerDelegateImpl.<init>(PowerMockJUnit47RunnerDelegateImpl.java:42)
> at org.powermock.modules.junit4.internal.impl.PowerMockJUnit49RunnerDelegateImpl.<init>(PowerMockJUnit49RunnerDelegateImpl.java:25)
> at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
> at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
> at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
> at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
> at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.createDelegatorFromClassloader(JUnit4TestSuiteChunkerImpl.java:149)
> at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.createDelegatorFromClassloader(JUnit4TestSuiteChunkerImpl.java:39)
> at org.powermock.tests.utils.impl.AbstractTestSuiteChunkerImpl.createTestDelegators(AbstractTestSuiteChunkerImpl.java:217)
> at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.<init>(JUnit4TestSuiteChunkerImpl.java:59)
> at org.powermock.modules.junit4.common.internal.impl.AbstractCommonPowerMockRunner.<init>(AbstractCommonPowerMockRunner.java:32)
> at org.powermock.modules.junit4.PowerMockRunner.<init>(PowerMockRunner.java:33)
> at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
> at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
> at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
> at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
> at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:29)
> at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:21)
> at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
> at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26)
> at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
> at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:26)
> at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.<init>(JUnit4TestReference.java:33)
> at org.eclipse.jdt.internal.junit4.runner.JUnit4TestClassReference.<init>(JUnit4TestClassReference.java:25)
> at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:48)
> at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:38)
> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:452)
> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
> Caused by: javassist.CannotCompileException: [source error] incompatible type for =
> at javassist.expr.FieldAccess.replace(FieldAccess.java:216)
> at org.powermock.core.transformers.impl.MainMockTransformer$PowerMockExpressionEditor.edit(MainMockTransformer.java:274)
> at javassist.expr.ExprEditor.loopBody(ExprEditor.java:198)
> at javassist.expr.ExprEditor.doit(ExprEditor.java:91)
> at javassist.CtClassType.instrument(CtClassType.java:1398)
> at org.powermock.core.transformers.impl.MainMockTransformer.transform(MainMockTransformer.java:74)
> at org.powermock.core.classloader.MockClassLoader.loadMockClass(MockClassLoader.java:210)
> ... 55 more
> Caused by: compile error: incompatible type for =
> at javassist.compiler.CodeGen.badAssign(CodeGen.java:770)
> at javassist.compiler.CodeGen.atAssignCore(CodeGen.java:863)
> at javassist.compiler.CodeGen.atVariableAssign(CodeGen.java:793)
> at javassist.compiler.CodeGen.atAssignExpr(CodeGen.java:747)
> at javassist.compiler.CodeGen.atStmnt(CodeGen.java:332)
> at javassist.compiler.ast.Stmnt.accept(Stmnt.java:50)
> at javassist.compiler.CodeGen.atStmnt(CodeGen.java:351)
> at javassist.compiler.ast.Stmnt.accept(Stmnt.java:50)
> at javassist.compiler.CodeGen.atIfStmnt(CodeGen.java:405)
> at javassist.compiler.CodeGen.atStmnt(CodeGen.java:355)
> at javassist.compiler.ast.Stmnt.accept(Stmnt.java:50)
> at javassist.compiler.CodeGen.atStmnt(CodeGen.java:351)
> at javassist.compiler.ast.Stmnt.accept(Stmnt.java:50)
> at javassist.compiler.Javac.compileStmnt(Javac.java:569)
> at javassist.expr.FieldAccess.replace(FieldAccess.java:210)
> ... 61 more
--
This message was sent by Atlassian JIRA
(v6.2.3#6260)
More information about the jboss-jira
mailing list