I have been debugging this for awhile now, and I'm hoping someone could shed some light here.
I have a Maven project that is added into Jenkins, using JDK 1.6. I'm using AOP in this project to handle the database transaction.
When I run the build in Jenkins, my testcase fails with the following exceptions:-
Caused by: org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'dataHandlerClassificationImpl':
Injection of resource dependencies failed; nested exception is
org.springframework.beans.factory.BeanNotOfRequiredTypeException:
Bean named 'writerDataLocationImpl' must be of type [xxx.script.WriterData],
but was actually of type [$Proxy17]
...
...
Caused by: org.springframework.beans.factory.BeanNotOfRequiredTypeException:
Bean named 'writerDataLocationImpl' must be of type [xxx.script.WriterData],
but was actually of type [$Proxy17]
...
...
The DataHandlerClassificationImpl class looks something like this:-
@Service
public class DataHandlerClassificationImpl extends DataHandler {
@Resource(name="writerDataLocationImpl")
private WriterData writerData;
...
}
WriterData is an interface with multiple implementations.
I am able to execute the code without problem from the IDE. To determine whether it is a Maven problem or Jenkins problem, I navigated to the Jenkins' project job folder using command line and I'm able to run mvn test without any errors.
I know the proxy error has something to do with AOP, and that I can only autowire to an interface instead of a concrete class... but that's not the case here since I'm able to run my code fine outside Jenkins.
Any ideas? Thanks.
mvnbuild command? Can you try replacing injected filed toprivate Object writerDataand dumpwriterData.getClass().getInterfacesafter dealing with compilation errors? This might give us a clue what is the nature of this unwanted and strange proxy. - Tomasz Nurkiewiczclean cobertura:cobertura site. Just for my curiosity sake, I changed it toclean testand it worked fine. When I changed it toclean site, I'm getting the same exception again. It looks like it has something to do withsite. Any ideas? Thanks. - limcwriterData.getClass().getInterfaces? Intellij basically gives me a regular compilation error. - limcmvn site. I ran that command from the command line, and I'm getting the exact exception. I'm not sure why this is behaving differently fromtest. - limcArrays.asList(new Object().getClass().getInterfaces())withinafterPropertiesSetor@PostConstruct. I am a bit surprised thatsiteis causing this problem to appear as I know Cobertura/Sonar tend to introduce this bug. Can you trymvn cobertura:coberturaalone? Should fail as well... - Tomasz Nurkiewicz