AspectJ没有被触发

2020-09-08 05:51发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我当前面临的问题是,一旦启动hybrisserver,我的AspectJ类就不会被触发或更多无法从aop.xml中被使用。

我想截取EditorConfigurationUtil getColumns()方法,因为我们想用我们自己的自定义逻辑扩展ListView.xsd。

我的Aspect类位于以下软件包中: com.emmet.prem.pim.AspectJEditorUtil.AspectJEditorUtil 它位于 backoffice/src文件夹中

我的aop.xml如下所示:

  <?xml version =" 1.0" encoding =" UTF-8"?>
  <!DOCTYPE Aspectj PUBLIC"-//AspectJ//DTD//EN"" http://www.ee.org/aspectj/dtd/aspectj.dtd">
  
      
          
          
      
      <方面>
          
      
  

  

您可以看到通往AspectJ类的路径是正确的,但是一旦我启动服务器,我就会收到以下错误消息:

  [PlatformInPlaceClassLoader @ 2d4f741c]警告寄存器定义失败-(RuntimeException)无法注册非方面:com $ emmet $ prem $ pim $ AspectJEditorUtil $ AspectJEditorUtil,com.emmet.prem.pim.AspectJEditorUtil.AspectJEditorUtil
  无法注册非方面:com $ emmet $ prem $ pim $ AspectJEditorUtil $ AspectJEditorUtil,com.emmet.prem.pim.AspectJEditorUtil.AspectJEditorUtil
  java.lang.RuntimeException:无法注册非方面:com $ emmet $ prem $ pim $ AspectJEditorUtil $ AspectJEditorUtil,com.emmet.prem.pim.AspectJEditorUtil.AspectJEditorUtil
          在org.aspectj.weaver.bcel.BcelWeaver.addLibraryAspect(BcelWeaver.java:219)
          在org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.registerAspects(ClassLoaderWeavingAdaptor.java:485)
          在org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.registerDefinitions(ClassLoaderWeavingAdaptor.java:304)
          在org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.initialize(ClassLoaderWeavingAdaptor.java:171)
          在org.aspectj.weaver.loadtime.Aj $ ExplicitlyInitializedClassLoaderWeavingAdaptor.initialize(Aj.java:340)
          在org.aspectj.weaver.loadtime.Aj $ ExplicitlyInitializedClassLoaderWeavingAdaptor.getWeavingAdaptor(Aj.java:345)
          在org.aspectj.weaver.loadtime.Aj $ WeaverContainer.getWeaver(Aj.java:319)
          在org.aspectj.weaver.loadtime.Aj.preProcess(Aj.java:113)
          在org.aspectj.weaver.loadtime.ClassPreProcessorAgentAdapter.transform(ClassPreProcessorAgentAdapter.java:54)
          在sun.instrument.TransformerManager.transform(TransformerManager.java:188)
          在sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:428)
          在java.lang.ClassLoader.defineClass1(本机方法)
          在java.lang.ClassLoader.defineClass(ClassLoader.java:763)
          在java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
          在java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
          在java.net.URLClassLoader.access $ 100(URLClassLoader.java:73)
          在java.net.URLClassLoader $ 1.run(URLClassLoader.java:368)
          在java.net.URLClassLoader $ 1.run(URLClassLoader.java:362)
          在java.security.AccessController.doPrivileged(本机方法)
          在java.net.URLClassLoader.findClass(URLClassLoader.java:361)
          在java.lang.ClassLoader.loadClass(ClassLoader.java:424)
          在de.hybris.bootstrap.loader.YURLClassLoader.loadRegisterAndResolveClass(YURLClassLoader.java:85)
          在de.hybris.bootstrap.loader.YURLClassLoader.loadClass(YURLClassLoader.java:72)
          在java.lang.ClassLoader.loadClass(ClassLoader.java:357)
          在java.lang.Class.forName0(本地方法)
          在java.lang.Class.forName(Class.java:348)

  

我的AspectJEditorUtil如下所示:

  @Aspect
  公共类AspectJEditorUtil
  {
      @Around(" call(* com.hybris.cockpitng.common.configuration.EditorConfigurationUtil.getColumns(..))")
      公共List  listColumn(final ProceedingJoinPoint joinPoint)抛出Throwable
      {
          返回(List )joinPoint.proceed();
      }
  }

  

(旁注:其中没有逻辑,因为首先我要开始使用它,然后要注意逻辑)

AspectJ是否有可能无法处理 backoffice/src文件夹中的java类?

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我当前面临的问题是,一旦启动hybrisserver,我的AspectJ类就不会被触发或更多无法从aop.xml中被使用。

我想截取EditorConfigurationUtil getColumns()方法,因为我们想用我们自己的自定义逻辑扩展ListView.xsd。

我的Aspect类位于以下软件包中: com.emmet.prem.pim.AspectJEditorUtil.AspectJEditorUtil 它位于 backoffice/src文件夹中

我的aop.xml如下所示:

  <?xml version =" 1.0" encoding =" UTF-8"?>
  <!DOCTYPE Aspectj PUBLIC"-//AspectJ//DTD//EN"" http://www.ee.org/aspectj/dtd/aspectj.dtd">
  
      
          
          
      
      <方面>
          
      
  

  

您可以看到通往AspectJ类的路径是正确的,但是一旦我启动服务器,我就会收到以下错误消息:

  [PlatformInPlaceClassLoader @ 2d4f741c]警告寄存器定义失败-(RuntimeException)无法注册非方面:com $ emmet $ prem $ pim $ AspectJEditorUtil $ AspectJEditorUtil,com.emmet.prem.pim.AspectJEditorUtil.AspectJEditorUtil
  无法注册非方面:com $ emmet $ prem $ pim $ AspectJEditorUtil $ AspectJEditorUtil,com.emmet.prem.pim.AspectJEditorUtil.AspectJEditorUtil
  java.lang.RuntimeException:无法注册非方面:com $ emmet $ prem $ pim $ AspectJEditorUtil $ AspectJEditorUtil,com.emmet.prem.pim.AspectJEditorUtil.AspectJEditorUtil
          在org.aspectj.weaver.bcel.BcelWeaver.addLibraryAspect(BcelWeaver.java:219)
          在org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.registerAspects(ClassLoaderWeavingAdaptor.java:485)
          在org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.registerDefinitions(ClassLoaderWeavingAdaptor.java:304)
          在org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.initialize(ClassLoaderWeavingAdaptor.java:171)
          在org.aspectj.weaver.loadtime.Aj $ ExplicitlyInitializedClassLoaderWeavingAdaptor.initialize(Aj.java:340)
          在org.aspectj.weaver.loadtime.Aj $ ExplicitlyInitializedClassLoaderWeavingAdaptor.getWeavingAdaptor(Aj.java:345)
          在org.aspectj.weaver.loadtime.Aj $ WeaverContainer.getWeaver(Aj.java:319)
          在org.aspectj.weaver.loadtime.Aj.preProcess(Aj.java:113)
          在org.aspectj.weaver.loadtime.ClassPreProcessorAgentAdapter.transform(ClassPreProcessorAgentAdapter.java:54)
          在sun.instrument.TransformerManager.transform(TransformerManager.java:188)
          在sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:428)
          在java.lang.ClassLoader.defineClass1(本机方法)
          在java.lang.ClassLoader.defineClass(ClassLoader.java:763)
          在java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
          在java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
          在java.net.URLClassLoader.access $ 100(URLClassLoader.java:73)
          在java.net.URLClassLoader $ 1.run(URLClassLoader.java:368)
          在java.net.URLClassLoader $ 1.run(URLClassLoader.java:362)
          在java.security.AccessController.doPrivileged(本机方法)
          在java.net.URLClassLoader.findClass(URLClassLoader.java:361)
          在java.lang.ClassLoader.loadClass(ClassLoader.java:424)
          在de.hybris.bootstrap.loader.YURLClassLoader.loadRegisterAndResolveClass(YURLClassLoader.java:85)
          在de.hybris.bootstrap.loader.YURLClassLoader.loadClass(YURLClassLoader.java:72)
          在java.lang.ClassLoader.loadClass(ClassLoader.java:357)
          在java.lang.Class.forName0(本地方法)
          在java.lang.Class.forName(Class.java:348)

  

我的AspectJEditorUtil如下所示:

  @Aspect
  公共类AspectJEditorUtil
  {
      @Around(" call(* com.hybris.cockpitng.common.configuration.EditorConfigurationUtil.getColumns(..))")
      公共List  listColumn(final ProceedingJoinPoint joinPoint)抛出Throwable
      {
          返回(List )joinPoint.proceed();
      }
  }

  

(旁注:其中没有逻辑,因为首先我要开始使用它,然后要注意逻辑)

AspectJ是否有可能无法处理 backoffice/src文件夹中的java类?

付费偷看设置
发送
1条回答
spaceman01
1楼-- · 2020-09-08 06:06

我曾经有过类似的问题。 我通过使用 execution()而不是@ Around

中的 call()修复了它

一周热门 更多>