I have a class MakeRedAspect in my project which makes red my messages:
import java.awt.Color;
import javax.swing.JLabel;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
@Aspect
public class MakeRedAspect {
@Pointcut("execution(static javax.swing.JLabel[] createMultiLabel(..))")
public void multilabelCreation() {}
@Around("multilabelCreation()")
public JLabel[] changeLabelColours(ProceedingJoinPoint thisJoinPoint) throws Throwable {
JLabel[] labels = (JLabel[]) thisJoinPoint.proceed();
for (JLabel label : labels)
label.setForeground(Color.RED);
return labels;
}
}
I have added required libraries to use aspectj in my project too, and I have added the name of class in META-INF/aop.xml class too(I thought these two are enough to use an aspect class):
<aspectj>
<aspects>
<aspect name="mehad.aspect.general.I18N"/>
<aspect name="mehad.aspect.general.MakeRedAspect"/>
<aspect name="mehad.aspect.general.AspSwingWorkerExecution"/>
<aspect name="mehad.aspect.general.RetryAspect"/>
<aspect name="mehad.aspect.general.AspWatchScriptExecution"/>
<!-- <aspect name="mehad.aspect.simulink.AspWatchPort"/>-->
<!--<aspect name="mehad.aspect.simulink.AspScannerManager"/>
<aspect name="mehad.aspect.simulink.AspComportInterface"/>
<aspect name="mehad.aspect.simulink.AspHeaderIcon"/>
<aspect name="mehad.aspect.simulink.AspFileUtil"/>-->
</aspects>
<!--
<weaver options="-verbose">
</weaver>
-->
</aspectj>
But again it doesn't make my messages red and it looks like my aspects doesn't work. I remember previously it worked fine and I guess that time I had added something to java build path,What's less in my steps that my aspects doesn't make effect?
It looks like you want to use load-time weaving (LTW). In order to enable LTW, you need to have the AspectJ weaving agent on the Java command line:
java -javaagent:pathto/aspectjweaver.jar ...