java 为什么/我如何得到错误:NoClassDefFoundError: org/springframework/aop/framework/ProxyFactory

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/5021298/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-30 09:05:26  来源:igfitidea点击:

Why/How am I getting the error: NoClassDefFoundError: org/springframework/aop/framework/ProxyFactory

javaproxyrmispring-aop

提问by ScrappyDev

Goal:Start up a server which supports remote access to method calls.

目标:启动一个支持远程访问方法调用的服务器。

The application doesn't fail till after all services are created.

在创建所有服务之后,应用程序才会失败。

The jar is in the target/lib directory.

jar 位于 target/lib 目录中。

Parent pom has the dependency:

父 pom 具有依赖项:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-aop</artifactId>
    <version>${version.spring}</version>
</dependency>

Note:I am able to create a spring bean of type: org.springframework.aop.framework.ProxyFactory

注意:我可以创建一个 spring bean 类型:org.springframework.aop.framework.ProxyFactory

Stack Trace:

堆栈跟踪:

36438 [main] ERROR org.springframework.web.context.ContextLoader  - Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.remoting.rmi.RmiServiceExporter#0' defined in class path resource [application-context-service-web-server.xml]: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: org/springframework/aop/framework/ProxyFactory
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1338)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.run(AbstractAutowireCapableBeanFactory.java:409)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getObject(AbstractBeanFactory.java:264)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380)
    at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3795)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4252)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:760)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:740)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:544)
    at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:626)
    at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:553)
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:488)
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1150)
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1022)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:736)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
    at org.apache.catalina.core.StandardService.start(StandardService.java:448)
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:700)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:552)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433)
Caused by: java.lang.NoClassDefFoundError: org/springframework/aop/framework/ProxyFactory
    at org.springframework.remoting.support.RemoteExporter.getProxyForService(RemoteExporter.java:156)
    at org.springframework.remoting.rmi.RmiBasedExporter.getObjectToExport(RmiBasedExporter.java:61)
    at org.springframework.remoting.rmi.RmiServiceExporter.prepare(RmiServiceExporter.java:268)
    at org.springframework.remoting.rmi.RmiServiceExporter.afterPropertiesSet(RmiServiceExporter.java:227)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1369)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1335)
    ... 39 more

application-context-service-web-server.xml:

应用程序上下文服务网络服务器.xml:

<bean class="org.springframework.remoting.rmi.RmiServiceExporter">
    <!-- does not necessarily have to be the same name as the bean to be exported -->
    <property name="serviceName" value="Manager1" />
    <property name="service" ref="manager1" />
    <property name="serviceInterface" value="com.service.Manager1" />
    <!-- defaults to 1099 -->
    <property name="registryPort" value="1199" />
</bean>

<bean class="org.springframework.remoting.rmi.RmiServiceExporter">
    <!-- does not necessarily have to be the same name as the bean to be exported -->
    <property name="serviceName" value="Manager2" />
    <property name="service" ref="manager2" />
    <property name="serviceInterface" value="com.service.Manager2" />
    <!-- defaults to 1099 -->
    <property name="registryPort" value="1199" />
</bean>

<bean id="manager1"
      class="com.service.impl.Manager1Impl">
    ...
</bean>

<bean id="manager2"
      class="com.service.impl.Manager2Impl">
    ...
</bean>

NOTE:This works, but the above still fails

注意:这有效,但以上仍然失败

<bean id="proxied" class="org.springframework.aop.framework.ProxyFactory" />
Thread [main] (Suspended (entry into method  in ProxyFactory))   
    ProxyFactory.() line: 40  
    NativeConstructorAccessorImpl.newInstance0(Constructor, Object[]) line: not available [native method]   
    NativeConstructorAccessorImpl.newInstance(Object[]) line: 39    
    DelegatingConstructorAccessorImpl.newInstance(Object[]) line: 27    
    Constructor.newInstance(Object...) line: 494 

采纳答案by ScrappyDev

This turned out to be an eclipse environment issue.
I use the SysDeo Tomcat Plugin.
Under Window > Preferences > Tomcat > Source PathI had to uncheck all the projects except the client and server projects.

结果证明这是eclipse环境问题。
我使用 SysDeo Tomcat 插件。
Window > Preferences > Tomcat > Source Path我必须取消选中除客户端和服务器项目之外的所有项目。

回答by Tomasz Nurkiewicz

Please double-check that you have the following dependencies as well:

请仔细检查您是否还有以下依赖项:

  • aopalliance.jar
  • spring-core.jar
  • aopalliance.jar
  • spring-core.jar

NoClassDefFoundErrordoes not say that it can't find ProxyFactoryclass - indeed, it has been found, but some of its dependencies are missing.

NoClassDefFoundError并不是说它找不到ProxyFactory类——事实上,它已经找到了,但是它的一些依赖项丢失了。

回答by Rajkumar Teckraft

please add the spring-aop-X.X.X.jar to your project libraries which related to spring version jars you are using. Then the problem will be resolved.
If you don't use the appropriate version of the jars, you keep on getting this errors.

The functionality may not work if you add different version of jars in spring. Kindly make sure the same version for best developers practices.

请将 spring-aop-XXXjar 添加到与您正在使用的 spring 版本 jar 相关的项目库中。那么问题就会得到解决。
如果您不使用适当版本的 jars,您将不断收到此错误。

如果在 spring 中添加不同版本的 jars,该功能可能不起作用。请确保为最佳开发人员实践使用相同的版本。

Thanks!.

谢谢!。