- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试完成 AspectJ Cookbook 中的 LTW 示例,但它不起作用。我创建并编译了 Java 类:
public class MyClass{
public void foo(int number, String name){
System.out.println("Inside of foo");
}
public static void main(String[] args) {
MyClass myObject = new MyClass();
myObject.foo(1, "Str");
}
}
它工作得很好:
c:\TEMP\examples>java MyClass
Inside of foo
然后我创建了方面:
public aspect HelloWorld{
pointcut callPointcut(): call(void MyClass.foo(int, String));
before() : callPointcut(){
System.out.println("Hello World from advice");
}
}
编译它:
c:\TEMP\examples>c:\tools\aspectj1.8\bin\ajc -outjar my.jar HelloWorld.aj
C:\TEMP\examples\HelloWorld.aj:4 [warning] no match for this type name: MyClass [Xlint:invalidAbsoluteTypeName]
pointcut callPointcut(): call(void MyClass.foo(int, String));
^^^^^^^^^
[Xlint:invalidAbsoluteTypeName]
1 warning
然后尝试运行:
c:\TEMP\examples>java -classpath "C:\tools\aspectj1.8\lib\aspectjweaver.jar" "-Djava.system.class.loader=org.aspectj.weaver.loadtime.WeavingURLClassLoader" -Daj.class.path=. "-Daj.aspect.path=c:\TEMP\examples" MyClass
java.lang.ExceptionInInitializerError
at org.aspectj.weaver.WeaverMessages.<clinit>(WeaverMessages.java:18)
at org.aspectj.weaver.bcel.ClassPathManager.addPath(ClassPathManager.java:81)
at org.aspectj.weaver.bcel.ClassPathManager.<init>(ClassPathManager.java:63)
at org.aspectj.weaver.bcel.BcelWorld.<init>(BcelWorld.java:285)
at org.aspectj.weaver.tools.WeavingAdaptor.init(WeavingAdaptor.java:176)
at org.aspectj.weaver.tools.WeavingAdaptor.<init>(WeavingAdaptor.java:109)
at org.aspectj.weaver.loadtime.WeavingURLClassLoader.<init>(WeavingURLClassLoader.java:75)
at org.aspectj.weaver.loadtime.WeavingURLClassLoader.<init>(WeavingURLClassLoader.java:52)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.SystemClassLoaderAction.run(Unknown Source)
at java.lang.SystemClassLoaderAction.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.lang.ClassLoader.initSystemClassLoader(Unknown Source)
at java.lang.ClassLoader.getSystemClassLoader(Unknown Source)
Caused by: java.lang.IllegalStateException: recursive invocation
at java.lang.ClassLoader.initSystemClassLoader(Unknown Source)
at java.lang.ClassLoader.getSystemClassLoader(Unknown Source)
at java.util.ServiceLoader.loadInstalled(Unknown Source)
at java.util.ResourceBundle.<clinit>(Unknown Source)
... 17 more
Error occurred during initialization of VM
java.lang.ExceptionInInitializerError
at org.aspectj.weaver.WeaverMessages.<clinit>(WeaverMessages.java:18)
at org.aspectj.weaver.bcel.ClassPathManager.addPath(ClassPathManager.java:81)
at org.aspectj.weaver.bcel.ClassPathManager.<init>(ClassPathManager.java:63)
at org.aspectj.weaver.bcel.BcelWorld.<init>(BcelWorld.java:285)
at org.aspectj.weaver.tools.WeavingAdaptor.init(WeavingAdaptor.java:176)
at org.aspectj.weaver.tools.WeavingAdaptor.<init>(WeavingAdaptor.java:109)
at org.aspectj.weaver.loadtime.WeavingURLClassLoader.<init>(WeavingURLClassLoader.java:75)
at org.aspectj.weaver.loadtime.WeavingURLClassLoader.<init>(WeavingURLClassLoader.java:52)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.SystemClassLoaderAction.run(Unknown Source)
at java.lang.SystemClassLoaderAction.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.lang.ClassLoader.initSystemClassLoader(Unknown Source)
at java.lang.ClassLoader.getSystemClassLoader(Unknown Source)
Caused by: java.lang.IllegalStateException: recursive invocation
at java.lang.ClassLoader.initSystemClassLoader(Unknown Source)
at java.lang.ClassLoader.getSystemClassLoader(Unknown Source)
at java.util.ServiceLoader.loadInstalled(Unknown Source)
at java.util.ResourceBundle.<clinit>(Unknown Source)
at org.aspectj.weaver.WeaverMessages.<clinit>(WeaverMessages.java:18)
at org.aspectj.weaver.bcel.ClassPathManager.addPath(ClassPathManager.java:81)
at org.aspectj.weaver.bcel.ClassPathManager.<init>(ClassPathManager.java:63)
at org.aspectj.weaver.bcel.BcelWorld.<init>(BcelWorld.java:285)
at org.aspectj.weaver.tools.WeavingAdaptor.init(WeavingAdaptor.java:176)
at org.aspectj.weaver.tools.WeavingAdaptor.<init>(WeavingAdaptor.java:109)
at org.aspectj.weaver.loadtime.WeavingURLClassLoader.<init>(WeavingURLClassLoader.java:75)
at org.aspectj.weaver.loadtime.WeavingURLClassLoader.<init>(WeavingURLClassLoader.java:52)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.SystemClassLoaderAction.run(Unknown Source)
at java.lang.SystemClassLoaderAction.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.lang.ClassLoader.initSystemClassLoader(Unknown Source)
at java.lang.ClassLoader.getSystemClassLoader(Unknown Source)
我尝试不同的解决方案,仅当我提供 -Daj.aspect.path=c:\TEMP\examples 时才会出现异常,但据我了解,这是因为编织器将仅加载提供此选项的方面。如果没有此选项,Java 程序将无需在加载时编织任何方面即可运行。
最佳答案
你能使用javaagent吗?我感觉比修改类加载器更简单:
javac MyClass.java
ajc HelloWorld.java -1.8 -outxml -d out
export CLASSPATH=.:out:$CLASSPATH
java -javaagent:$AJHOME/lib/aspectjweaver.jar MyClass
Hello World from advice
Inside of foo
ajc 调用中的 -outxml
选项会在 out
文件夹中生成 META-INF/aop-ajc.xml
文件,这就是代理将寻找打开编织的内容。 (该 xml 文件将简单地列出要“打开”的方面以及可选的一些额外的编织器配置)
关于java - AspectJ:LTW 中的 ExceptionInInitializerError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34942134/
我想将aspectj与LTW一起使用,但我不想使用代理 我做了一些搜索,并没有找到什么,只有在下面的文章中,提到了一些东西https://www.eclipse.org/aspectj/doc/rel
我正在尝试将 AspectJ(直到昨天我才知道)与 LTW 一起使用,以了解如何 an existing framework作品。简而言之,我对如何解析框架的输入 XML 文件感兴趣。 我写了以下方面
我尝试完成 AspectJ Cookbook 中的 LTW 示例,但它不起作用。我创建并编译了 Java 类: public class MyClass{ public void foo(int nu
我正在尝试使用 LTW 在这里创建一个周围的建议。 com.sample.core.Task 位于不同的库 jar 中。当我尝试编译时,我收到警告 "advice defined in com.ao
我们如何使用 aop.xml 在纯 java 代码中定义切入点?这是一个示例代码,我试图在 aop.xml-> 中定义切入点1)这是java类 package testAOP; public clas
我有一个 Aspect 类,它定义了一个切入点表达式,如下所示 @Pointcut("execution(* com.vg.pw.tasks.shared.*.executeTasks(..))")
我在我的 guice 应用程序中使用 aspectj LTW,我正在尝试为从配置文件控制的方面创建切入点定义。例如: pointcut publicOperation() : execution(**
我已将我的 aspectJ 方面捆绑到一个 War (aspectsWar.war) 文件中,并将其部署到具有现有正在运行的应用程序的应用程序服务器,并在 tomcat 服务器上使用 LTW 编织和
我尝试用简单的方面来做一个简单的项目(hello world)。我使用 Maven 来构建这个项目,LTW 用于方面,logback 用于日志。当我使用时,方面是编织的: "C:\Program Fi
我正在使用 Spring LoadTimeWeaving 功能在 ddd 架构中开发应用程序。问题是我可以使用 Eclipse 但不能通过 Maven 运行我的 Junit 测试。我已经尝试了各种网站
我使用 AspectJ 设置了 LTW,并且 spring 非常快速且成功。这是设置:beans.xml: 我的服务将自动连接到一个类: @Service public class MySe
我试图将我的方面定义为具体方面,以便能够在 aop.xml 中定义切入点而无需编译代码。我正在使用 LTW。 当我在方面类本身中定义切入点 exp 并将方面定义为简单方面 ( ) 时,它工作得很好。但
Here is my sample non-working project . 它包含2个模块: aop-lib - 用作库的方面。它包含以下类 Wrap.java - 这是用于附加建议的注解 Wra
我正在使用 Spring 3.0 RC1 中的缓存抽象机制:我已经设置了字节码(基于 AspectJ)weawing,以便缓存机制可以应用于从类本身调用的方法。值得一提的是,首先我使用的是基于代理的方
我一直在努力让它在我这边发挥作用。我想要实现的是启动我的 spring-boot 项目,当我运行没有任何 Java 代理参数的“java -jar app.jar”(使用 Tomcat 8 嵌入式)时
我在 Tomcat 6 webapp 中使用 Spring 进行加载时编织时遇到了一些问题。我只想将它用于事务(以便自调用尊重事务注释,而 AOP 代理则不这样做)。似乎编织器正在加载,但我的带注释的
我见过许多与 @Cacheable 相关的 Spring 功能示例。 , @Transactional , @Async等,每次都重复相同的选项: 通过 ApplicationContext.getB
作为迁移到 Java 8 和 Spring 4 的一部分,我想我会升级到所有 64 位代码。此应用程序在 32 位上完美运行,但加载时间编织在 64 位上不起作用(事实上什至不加载)。 架构细节: J
我有一个配置了aspectJ LTW的spring tomcat项目,我想用AspectJ LTW运行单元测试。根据为独立 JVM 使用 LTW 运行的 spring 文档需要传入 JVM 代理的参数
我经历了所有尝试使我的项目在 Tomcat 上运行的可能性,并切入模型( setter/getter )并使用 AspectJ Load Time Weaver 编织它们。基本上,我遵循了 Sprin
我是一名优秀的程序员,十分优秀!