坑爹的myeclipse 的tomcat 重部署 redeploy !

时间:2023-03-10 02:50:03
坑爹的myeclipse 的tomcat 重部署 redeploy !

启动 tomcat 出现:

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [springcontext-config.xml]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.logicalcobwebs.proxool.ConnectionPoolDefinition.setJmx(Z)V
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1578)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:187)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1213)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1053)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1018)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:566)
... 39 more
Caused by: java.lang.NoSuchMethodError: org.logicalcobwebs.proxool.ConnectionPoolDefinition.setJmx(Z)V
at org.logicalcobwebs.proxool.ProxoolDataSource.registerPool(ProxoolDataSource.java:133)
at org.logicalcobwebs.proxool.ProxoolDataSource.getConnection(ProxoolDataSource.java:94)
at org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:139)
at org.hibernate.engine.jdbc.internal.JdbcServicesImpl$ConnectionProviderJdbcConnectionAccess.obtainConnection(JdbcServicesImpl.java:279)
at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:124)
at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:111)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:234)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:206)
at org.hibernate.cfg.Configuration.buildTypeRegistrations(Configuration.java:1887)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1845)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1930)
at org.springframework.orm.hibernate4.LocalSessionFactoryBuilder.buildSessionFactory(LocalSessionFactoryBuilder.java:372)
at org.springframework.orm.hibernate4.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:454)
at org.springframework.orm.hibernate4.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:439)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1637)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574)
... 50 more

开始只有0.8.3, 出现ClassNotFound: ProxoolDataSource xxx

后面 去掉了0.8.3,加上了 0.9.0RC3,那个错误没有了,又出现了新的错误。。。

真是奇怪啊! 难道需要换回0.8 ? 。。 可是, 我查找 这个方法也是存在的啊!

重新部署了, 还是一样的啊!

D:\code\ws\spring.metadata.me_tcat\webapps\ktb2\WEB-INF\lib 一看, 竟然有多个 proxool 的jar , 那个0.8 的还在! 我明白了!

找那个的时候, 系统找到了0.9, 但是找那个方法的时候, 加载到了 0.8 的那个, 于是。。。

把D:\code\ws\spring.metadata.me_tcat\webapps\ktb2\WEB-INF\lib 下的 0.8 的jar 删除就好了!

myeclipse 真是 坑爹!

为什么会这样!!

其实之前也有研究过, myeclipse 的 redeploy 有三种方式, 分别是

默认就是 不删除, 即使是没用的jar —— classpath 中不存在的, 也有保留。 于是就发生这样的悲剧。。。