使用-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
一切都很好。
答案 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添加到普通类路径并手动指定主类。但这是一个品味问题,是否在开始申请时知道主要的班级名称。