点击此处---> 群内免费提供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类?
我曾经有过类似的问题。 我通过使用 execution()而不是@ Around
中的 call()修复了它一周热门 更多>