gpt4 book ai didi

java - 方法aspectOf未定义

转载 作者:行者123 更新时间:2023-11-30 04:17:22 25 4
gpt4 key购买 nike

我用 java 构建了一个邮件服务器,并提供了一个用 AOP 编写的 ObserverProtocol。我根据需要使用带有 AspectJ 插件的 Eclipse

我尝试使用像aspectOf这样的静态方法,我认为应该在编织步骤中添加它

Eclipse 似乎无法使其工作,因为我总是收到以下错误:

描述资源路径位置类型ObserverProtocol MailReaderBean.java/emailClent_test/src/emailserver line 86 Java Problem

类型的方法aspectOf() 未定义

根据我通过窥探各种网站、教程和文档所了解到的情况,我的 .aj 文件似乎没有正确编织

我尝试使用 ajc 手动编译,但没有成功,并且我以各种方式修改了路径、设置、jar 和库,似乎没有任何效果,而且我似乎找不到明确的指南或教程来正确设置内容

我的方面代码:

package protocol;


import java.util.WeakHashMap;
import java.util.List;
import java.util.LinkedList;
import java.util.Iterator;


public abstract aspect ObserverProtocol
{

protected interface Subject { }


protected interface Observer { }

private WeakHashMap perSubjectObservers;

protected List getObservers(Subject s)
{
if (perSubjectObservers == null)
{
perSubjectObservers = new WeakHashMap();
}

List observers = (List)perSubjectObservers.get(s);

if ( observers == null )
{
observers = new LinkedList();
perSubjectObservers.put(s, observers);
}

return observers;
}

public void addObserver(Subject s, Observer o)
{
getObservers(s).add(o);
}

public void removeObserver(Subject s, Observer o)
{
getObservers(s).remove(o);
}

protected abstract pointcut subjectChange(Subject s);

after(Subject s): subjectChange(s)
{
Iterator iter = getObservers(s).iterator();

while ( iter.hasNext() )
{
updateObserver(s, ((Observer)iter.next()));
}
}

protected abstract void updateObserver(Subject s, Observer o);

public static ObserverProtocol aspectOf() {
// TODO Auto-generated method stub
return this;
}
}

我的 java 服务器中的违规代码

//Add observer Proxy for monitoring the subject MailServer.
ObserverProtocol.aspectOf().addObserver(this, proxy );

是否有任何资源可以帮助我了解编织的工作原理以及如何在不诉诸 Spring 或 Maven 的情况下设置我的构建?

最佳答案

此方法(和hasAspect())是在编织期间添加的。如果您的方面是使用 javac 而不是 ajc 构建的,那么当 jvm 启动时它不会有这些方法,因为编织器尚未运行。

我建议您阅读这些文档:

关于java - 方法aspectOf未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18037567/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com