加载时编织和java -jar

时间:2014-06-27 15:55:15

标签: aspectj

使用-jar?

启动程序时是否可以添加aspectj加载时代理

如果我开始使用Jetty

java -javaagent:aspectjweaver-1.8.0.jar -classpath toto.jar -jar start.jar

aspectj不适用。但我打电话

java -javaagent:aspectjweaver-1.8.0.jar -classpath toto.jar;start.jar org.eclipse.jetty.start.Main
一切都很好。

1 个答案:

答案 0 :(得分:0)

-jar和LTW的问题似乎是与-cp (...) my.MainClass方法相比,类加载顺序有所不同。在编织器可以在类路径上看到方面JAR中的方面和-jar之前,可能会加载使用META-INF/aop-ajc.xml指定的JAR。我发现了一种解决方法,但它并不好:您可以将JAR方面放在JVM的引导类路径中,但在这种情况下,甚至在编织代理之前就会加载方面。因此,您还必须将aspectjrt.jar添加到引导类路径:

java -Xbootclasspath/a:aspect.jar;lib\aspectjrt.jar -javaagent:lib\aspectjweaver.jar -jar application.jar

考虑到这种情况,我想最好将应用程序JAR添加到普通类路径并手动指定主类。但这是一个品味问题,是否在开始申请时知道主要的班级名称。