Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.lang.NoClassDefFoundError:ProceedingJoinPoint_Java_Spring_Aspectj_Tomcat5.5_Spring Aop - Fatal编程技术网

java.lang.NoClassDefFoundError:ProceedingJoinPoint

java.lang.NoClassDefFoundError:ProceedingJoinPoint,java,spring,aspectj,tomcat5.5,spring-aop,Java,Spring,Aspectj,Tomcat5.5,Spring Aop,我们有许多web服务客户端应用程序,它们在面向客户的主要应用程序和后端web服务之间进行接口。这些web服务应用程序生成自己的JAXWS存根代码,以直接与web服务和实现代码交互,从而在JAXWS代码和希望使用它的任何应用程序之间提供干净的接口。在过去的几周里,我们遇到了一些小问题,但大部分问题已经解决 在将这些集成到面向客户的应用程序中时,我们遇到了许多问题,主要集中在JDK1.5和1.6的不兼容性上。这些问题现在已经解决,但是我们遇到了另一个我们没有解决办法的问题。web服务客户端使用AOP

我们有许多web服务客户端应用程序,它们在面向客户的主要应用程序和后端web服务之间进行接口。这些web服务应用程序生成自己的JAXWS存根代码,以直接与web服务和实现代码交互,从而在JAXWS代码和希望使用它的任何应用程序之间提供干净的接口。在过去的几周里,我们遇到了一些小问题,但大部分问题已经解决

在将这些集成到面向客户的应用程序中时,我们遇到了许多问题,主要集中在JDK1.5和1.6的不兼容性上。这些问题现在已经解决,但是我们遇到了另一个我们没有解决办法的问题。web服务客户端使用AOP设置诸如头凭证、异常处理和限制等常见事项:

<aop:config>
    <aop:pointcut id="pointcut" expression="execution(* MyService.*(..))" />

    <aop:aspect id="throttling" ref="throttlingAdvisor">
        <aop:around pointcut-ref="pointcut" method="doThrottle" />
 </aop:aspect>
    <aop:aspect id="errorHandling" ref="errorHandlingAdvisor">
        <aop:around pointcut-ref="pointcut" method="handleExceptions" />

每个方面都引用一个POJO bean,这些bean包括配置中声明的方法,方法参数类型为org.aspectj.lang.ProceedingJoinPoint,用于提取我截取的方法的参数

我们为每个web服务客户机(在applicationContext webservicename.xml中)都提供了其中一个。此xml文件包含在打包的JAR中,该JAR包含在面向客户的应用程序中,并导入到由面向客户的应用程序的web.xml加载的主applicationContext.xml中

我们为这些web客户机进行了大量的单元测试,它们都通过了测试,证明它们各自没有问题。当所有服务都包含在面向客户的应用程序中时,我们会在启动时得到一个java.lang.NoClassDefFoundError:ProceedingJoinPoint异常(我们使用tomcat 5.5和JDK1.5.017)

我在JavaDoc中查找java.lang.NoClassDefFoundError,以防它有特殊含义,看起来JVM认为该类不存在。然后,我查找包含它声称找不到的类(aspectjrt-1.5.4.jar和aspectjweaver-1.5.4.jar)的jar,这些类存在重复,因此我尝试依次删除每个jar,看看会发生什么,完全相同的错误


我是否缺少必需的依赖项?这个问题有一个共同的原因吗(我昨天搜索了这个,没有找到多少)?任何帮助都将不胜感激。

可能是类加载器的问题。AspectJ罐子在哪里?如果您现在在WEB-INF/lib中有它们,也许您可以尝试将它们复制到Tomcat common/lib中,看看这是否有帮助


可能是应用程序服务器类加载器在启动时需要它们,但应用程序类加载器没有从WEB-INF获取它们,因为它在类加载器层次结构中较低。

只将aspectjrt.jar添加到服务器/lib文件夹,而不是aspectjweaver.jar。重复的类也会导致混淆。运行时jar(“rt”代表运行时)应该用于运行时。weaver jar用于编译/编织时。您使用的是LTW还是CTW?

经过这么长时间的努力,我们终于找到了这个问题的解决方案,当检测到SVN提交时,我们使用竹子来构建我们的项目。尽管竹子环境的建立是为了与我们的开发机器相匹配,但当它构建一个依赖的项目时,它产生了这个奇怪的问题

我们仍然不确定它为什么会这样做,但是与此同时,我们正在手动构建和部署这个特定的项目

我对任何遇到类似问题的人的建议是,将自己与内部maven回购隔离,并在本地重建所有项目


谢谢大家的帮助。

谢谢你的快速回复,我试着将它们移动到common/lib,但没有效果。我还尝试将它们移动到server/lib,这导致了另一个问题java.lang.NoClassDefFoundError:org/aspectj/weaver/reflect/ReflectionWorld$ReflectionWorldException。我使用的是LTW-Maven构建JAR时没有进行特殊的编织。您如何在Tomcat中连接LTW?