私はTapestry 5.2.1で構築されたWebプロジェクトを持っています。私は、このアプリケーションでトレースするために使用していた簡単なロギングの側面を持っています。アプリケーションの一部をリファクタリングして展開しようとするまで、すべてうまくいきました。私は、アプリケーションをデプロイする場合AspectjとタペストリーがあるNoAspectBoundException 5
は、関係なく、私は次の例外を取得に行くことにしようどのページ:コンパイル中
@Aspect
public class TraceAspect {
Logger logger = Logger.getLogger("trace");
public TraceAspect() {
logger.setLevel(Level.ALL);
}
/**
* Will log every execution of
* <ul>
* <li>doEverything</li>
* <li>doSomething</li>
* </ul>
* excluding any test classes.
*/
@Pointcut("(execution(public void *(..)) || execution(*.new(..))) && !within(*Test) !within(com.aspects.*)")
protected void logging() {
}
@Around("logging()")
public void doThing(final ProceedingJoinPoint thisJoinPoint) throws Throwable {
final String joinPointName = thisJoinPoint.getThis().getClass().getSimpleName() + "." + thisJoinPoint.getSignature().getName() + "()";
logger.info("Entering [" + joinPointName + "]");
thisJoinPoint.proceed();
logger.info("Leaving [" + joinPointName + "]");
}
}
:
Caused by: java.lang.RuntimeException: Exception assembling root component of page Index: Exception while initializing TraceAspect: org.aspectj.lang.NoAspectBoundException: TraceAspect
at org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl.performAssembleRootComponent(ComponentAssemblerImpl.java:124)
at org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl.access$000(ComponentAssemblerImpl.java:38)
at org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl$1.invoke(ComponentAssemblerImpl.java:82)
at org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl$1.invoke(ComponentAssemblerImpl.java:79)
at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:65)
... 73 more
Caused by: org.aspectj.lang.NoAspectBoundException: Exception while initializing TraceAspect: org.aspectj.lang.NoAspectBoundException: TraceAspect
at TraceAspect.aspectOf(TraceAspect.aj:1)
at com.wex.rrt.wrightweb.reportrequest.webapp.pages.Index.initializer(Index.java:3)
at com.wex.rrt.wrightweb.reportrequest.webapp.pages.Index.<init>(Index.java)
at $Instantiator_12d4da06f67.newInstance($Instantiator_12d4da06f67.java)
at org.apache.tapestry5.internal.structure.InternalComponentResourcesImpl.<init>(InternalComponentResourcesImpl.java:146)
at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.<init>(ComponentPageElementImpl.java:593)
at org.apache.tapestry5.internal.structure.ComponentPageElementImpl.<init>(ComponentPageElementImpl.java:609)
at org.apache.tapestry5.internal.pageload.ComponentAssemblerImpl.performAssembleRootComponent(ComponentAssemblerImpl.java:93)
... 77 more
Caused by: org.aspectj.lang.NoAspectBoundException: TraceAspect
at TraceAspect.aspectOf(TraceAspect.aj:1)
at AbstractLoggingAspect.<init>(AbstractLoggingAspect.aj:7)
at TraceAspect.<init>(TraceAspect.aj:12)
at TraceAspect.ajc$postClinit(TraceAspect.aj:1)
at TraceAspect.<clinit>(TraceAspect.aj:1)
... 84 more
私の局面は横ばいとしているが、このではありませんすべて正常に動作します。私は側面をコンパイルするMavenプラグインを使用しています:私はこのオフで働いてきたし、上の一日の大半をどこでも得ていない
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.3</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
<complianceLevel>1.6</complianceLevel>
</configuration>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>test-compile</goal>
</goals>
</execution>
</executions>
</plugin>
。私はNoAspectBoundExceptionを正確に理解していません。コンパイラがそのアスペクトを完全に織り込んでいないように見えるでしょうか?私はAspectJに新しいですが、これはTapestry5と関係があるのだろうかと思います。しかし私はTap5がAOPを使っていることを知っている。
私が言ったように、私は別のタペストリーカスタムライブラリにいくつか移ってから今は自分のWebアプリケーションの依存関係になるまでこれはうまくいきました。
上記の私のところを更新しました。私は '!within(com.aspects。*)を追加しましたが、私はページにアクセスしようとすると同じ例外が発生します。 – Casey
私はコンポーネントライブラリのパッケージを除外しようとしましたが、上記と同じ例外が発生しました。 – Casey
私はTapestryについてよく分かりませんが、Tapestryコンポーネントを読み込むクラスローダーにそのアスペクトが表示されないのでしょうか? – ramnivas