Compile-time aspects throwing NoSuchMethodError in Spring Boot -
i getting error when running "compile-time-weaver" classes maven on jar file included in spring boot 1.2.2 war.
so, have jar, ctms-components.jar, run aspect (e.g., method timing profiler) on using maven. then, spring boot puts in embedded war (i'm using tomcat). see both aspectj woven classes ajc closures(), etc. , see logs maven weaving classes per pointcuts.
<plugin> <groupid>org.codehaus.mojo</groupid> <artifactid>aspectj-maven-plugin</artifactid> <version>1.7</version> <configuration> <showweaveinfo>true</showweaveinfo> <source>${compiler.version}</source> <target>${compiler.version}</target> <xlint>ignore</xlint> <compliancelevel>${compiler.version}</compliancelevel> <encoding>utf-8</encoding> <verbose>false</verbose> <aspectlibraries> <aspectlibrary> <groupid>cdot.ctms</groupid> <artifactid>ctms-aspects</artifactid> </aspectlibrary> </aspectlibraries> <weavedependencies> <weavedependency> <groupid>cdot.ctms</groupid> <artifactid>ctms-components</artifactid> </weavedependency> </weavedependencies> </configuration> <executions> <execution> <goals> <goal>compile</goal> </goals> </execution> </executions> <dependencies> <dependency> <groupid>org.aspectj</groupid> <artifactid>aspectjrt</artifactid> <version>${aspectj.version}</version> </dependency> <dependency> <groupid>org.aspectj</groupid> <artifactid>aspectjtools</artifactid> <version>${aspectj.version}</version> </dependency> </dependencies> </plugin>
here excerpt maven log.
[info] join point 'method-execution(cdot.base.dataaccessobject cdot.ctms.layer.services.comm.device.doppler.facade.dopplerfacade.getdopplerexchange())' in type 'cdot.ctms.layer.services.comm.device.doppler.facade.dopplerfacade' (dopplerfacade.java:78) advised around advice 'cdot.aop.profiler.methodtimeraspect' (ctms-aspects-2.0.0-snapshot.jar!methodtimeraspect.class(from methodtimeraspect.java)) [info] join point 'method-execution(cdot.base.dataaccessobject cdot.ctms.layer.services.comm.device.doppler.facade.dopplerfacade.getdopplerrawdataexchange())' in type 'cdot.ctms.layer.services.comm.device.doppler.facade.dopplerfacade' (dopplerfacade.java:84) advised around advice 'cdot.aop.profiler.methodtimeraspect' (ctms-aspects-2.0.0-snapshot.jar!methodtimeraspect.class(from methodtimeraspect.java))
my spring boot war shows ajc closures bundled in war:
the error when running application is:
java.lang.nosuchmethoderror: cdot.aop.profiler.methodtimeraspect.aspectof()lcdot/aop/profiler/methodtimeraspect
nested exception java.lang.nosuchmethoderror: cdot.aop.profiler.methodtimeraspect.aspectof()lcdot/aop/profiler/methodtimeraspect; @ org.springframework.beans.abstractpropertyaccessor.setpropertyvalues(abstractpropertyaccessor.java:121) @ org.springframework.beans.abstractpropertyaccessor.setpropertyvalues(abstractpropertyaccessor.java:75) @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.applypropertyvalues(abstractautowirecapablebeanfactory.java:1502) ... 87 more
i don't understand why compile time weaving, adds spring boot war fine, , includes ctms-aspects.jar, cannot find method on aspect?
the aspectj runtime library aspectjrt.jar must on classpath, should maven <dependency>
not aspectj maven plugin maven module such.
Comments
Post a Comment