我使用eclipse在centos上构建了.war文件,然后在centos(Linux)上的tomcat8.5上部署了它。它正在处理这个问题。但是,当我在windows上部署相同的".war“或构建一个新的".war”文件时,它并没有在Tomcat8.5上工作,而是抛出BeansInCreation异常。具有相同的Java1.7和Tomcat8.5版本的windows7.,该构建还在windows上工作(在更新之前),并且在最新的代码中没有做任何重大更改。
以下是localhost的日志:
Caused by: org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name '': Bean with name '' has been injected into other beans ['','',''] in its raw version as part of a circular reference, but has eventually been wrapped (for example as part of auto-proxy creation). This means that said other beans do not use the final version of the bean. This is often the result of over-eager type matching - consider using 'getBeanNamesOfType' with the 'allowEagerInit' flag turned off, for example.
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:485)
at java.security.AccessController.doPrivileged(Native Method)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:455)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:251)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:169)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:248)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:170)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:268)
... 98 more我认为问题可能是“大文件路径”,因为Linux支持更大的文件路径,而不是windows。我在regedit中也做了修改以支持,但这不需要改变。
发布于 2018-08-31 11:35:51
如果它在linux上工作,而在windows上不起作用,那么我假设在部署war时会出现类加载问题(类的顺序)。我建议检查/lib文件中的.war目录。
也许它包含来自同一个jar的不同版本。
编辑:
您可以在linux和windows上跟踪tomcat (或任何java应用程序)的类加载。为此,您需要使用一个特殊的vm参数(-verbose:class)启动它。看看这里:Java verbose class loading
https://stackoverflow.com/questions/52114494
复制相似问题