1

外部 jar ファイル ( にあります) からクラスを織り込むために、Tomcat 7 Web アプリケーションで Load Time Weaving を動作させようとしていますWEB-INF/lib

私は次のことをしました:

  1. 次のパラメーターを使用して Tomcat を起動しました。-javaagent:/path/aspectjweaver-1.7.0.jar -classpath /path/aspectjrt-1.7.0.jar:etc

  2. aop.xmlに配置WAR_ROOT/META-INF/, WEB-INF/lib/META_INF, WEB-INF/lib and WEB-INF/

aop.xml:

<aspectj>
 <aspects>
   <aspect name="ca.gc.agr.agrishare.web.jsf.chartlet.AgriShareGanttRendererAspect"/>
 </aspects>
 <weaver options="-verbose -debug -XnoInline">
    <include within="org.jfree..*"/>
    <dump within="org.jfree..*" />
 </weaver>
</aspectj>

ファイルをどこに配置しても、ターゲット クラスが織り込まれず、次のようなエラーが表示され続けます。

[WebappClassLoader@495b317b] error can't determine implemented interfaces of missing type javax.validation.ValidatorFactory
when weaving type org.hibernate.cfg.beanvalidation.TypeSafeActivator
when weaving classes 
when weaving 
 [Xlint:cantFindType]

私が指定したパッケージ以外のクラスを織り込もうとしているということと、サーバーの起動時間が4倍になったことを考えると、すべてのクラスを織り込もうとしていると思います。

私は何が欠けていますか?

4

1 に答える 1

2

理解した。

WAR_ROOT/META-INF/によって検索される webapp メタデータservletContext.getResource("/META-INF/bla")です。

WAR_ROOT/WEB-INF/classes/META-INFによって検索される Java クラスのメタデータgetContextClassLoader().getResource("/META-INF/bla")です。

Config プロジェクト (クラスパス上) で作成META-INF/aop.xmlしましたが、現在はすべて正常に動作しています。

于 2014-01-25T05:47:10.563 に答える