是否有任何要添加到java buildpath的内容,以便在运行项目时编辑方面?

时间:2015-07-28 06:05:04

标签: java aspectj buildpath aop aspect

我的项目中有一个MakeRedAspect类,它使我的消息变为红色:

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;
    }
}

我在项目中添加了必需的库以使用aspectj,我也在META-INF / aop.xml类中添加了类的名称(我认为这两个就足以使用方面类):

<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>

但是它再次没有使我的消息变红,看起来我的方面不起作用。我记得之前它工作得很好,我想那段时间我已经添加了一些东西到java构建路径,在我的步骤中,我的方面没有生效的东西更少?

1 个答案:

答案 0 :(得分:0)

看起来您想要使用加载时编织(LTW)。要启用LTW,您需要在Java命令行上安装AspectJ编织代理程序:

java -javaagent:pathto/aspectjweaver.jar ...

请参阅AspectJ documentation