启动spring启动应用程序时出现“cassandracluster”bean异常

baubqpgj  于 2021-06-10  发布在  Cassandra
关注(0)|答案(1)|浏览(331)

我在启动spring启动应用程序时遇到以下异常。spring boot版本:2.1.13 spring framework版本:5.1.14
异常:org.springframework.beans.factory.beancreation异常:创建名为“cassandracluster”的bean时出错,该bean在类路径资源[org/springframework/boot/autoconfigure/cassandra/cassandraautoconfiguration.class]中定义:通过工厂方法示例化bean失败;嵌套异常为org.springframework.beans.beaninstantiationexception:未能示例化[com.datastax.driver.core.cluster]:工厂方法“cassandracluster”引发异常;嵌套的异常是java.lang.ExceptionInInitializeError,位于org.springframework.beans.factory.support.constructorresolver.instantiate(constructorresolver)。java:627)~[spring-beans-5.1.14.发布。jar:5.1.14.release]在org.springframework.beans.factory.support.constructorresolver.instantialEusingFactoryMethod(constructorresolver。java:456) ~[spring-beans-5.1.14.发布。jar:5.1.14.release]位于org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.instantialEUsingFactoryMethod(abstractautowirecapablebeanfactory)。java:1320)~[spring-beans-5.1.14.发布。jar:5.1.14.release]在org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.createbeaninstance(abstractautowirecapablebeanfactory)。java:1159)~[spring-beans-5.1.14.发布。jar:5.1.14.release]位于org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.docreatebean(abstractautowirecapablebeanfactory)。java:555) ~[spring-beans-5.1.14.发布。jar:5.1.14.release]位于org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.createbean(abstractautowirecapablebeanfactory)。java:515)~[spring-beans-5.1.14.发布。jar:5.1.14.release]在org.springframework.beans.factory.support.abstractbeanfactory.lambda$dogetbean$0(abstractbeanfactory)。java:320) ~[spring-beans-5.1.14.发布。jar:5.1.14.release]位于org.springframework.beans.factory.support.defaultsingletonbeanregistry.getsingleton(defaultsingletonbeanregistry)。java:222)~[spring-beans-5.1.14.发布。jar:5.1.14.release]位于org.springframework.beans.factory.support.abstractbeanfactory.dogetbean(abstractbeanfactory.com)。java:318) ~[spring-beans-5.1.14.发布。jar:5.1.14.release]在org.springframework.beans.factory.support.abstractbeanfactory.getbean(abstractbeanfactory。java:199)~[spring-beans-5.1.14.发布。jar:5.1.14.release]位于org.springframework.beans.factory.support.defaultlistablebeanfactory.PreInstanceSingletons(defaultlistablebeanfactory)。java:847) ~[spring-beans-5.1.14.发布。jar:5.1.14.release]位于org.springframework.context.support.abstractapplicationcontext.finishbeanfactoryinitialization(abstractapplicationcontext)。java:877)~[spring-context-5.1.14.发布。jar:5.1.14.release]在org.springframework.context.support.abstractapplicationcontext.refresh(abstractapplicationcontext。java:549) ~[spring-context-5.1.14.发布。jar:5.1.14.release]在org.springframework.boot.web.servlet.context.servletwebserverapplicationcontext.refresh(servletwebserverapplicationcontext。java:141)~[spring-boot-2.1.13.释放。jar:2.1.13.release]在org.springframework.boot.springapplication.refresh(springapplication。java:744) ~[spring-boot-2.1.13.释放。jar:2.1.13.release]位于org.springframework.boot.springapplication.refreshcontext(springapplication。java:391)~[spring-boot-2.1.13.释放。jar:2.1.13.release]在org.springframework.boot.springapplication.run(springapplication。java:312)~[spring-boot-2.1.13.释放。jar:2.1.13.release]
原因:原因:com.datastax.driver.core.exceptions.driverinternalerror:在类路径中检测到不兼容的guava版本。您需要16.0.1或更高版本。在com.datastax.driver.core.guavacompatibility.selectimplementation(guavacompatibility。java:191)~[cassandra-driver-core-3.6.0。jar:na]在com.datastax.driver.core.guavacompatibility。java:59)~[cassandra-driver-core-3.6.0。jar:na] ... 省略30个公共框架
但是我在类路径中有guava-19.0版本jar。
我在SpringBoot2.1.6和SpringFramework 5.1.5中没有遇到这个问题。

wn9m85ua

wn9m85ua1#

你的类路径上似乎有两个版本的Guava。其他一些包可能会拉其他版本。你应该把Guava的版本钉在盒子里 <dependencyManagement> maven部分(我希望您使用maven):

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>com.google.guava</groupId>
      <artifactId>guava</artifactId>
      <version>19.0</version>
    </dependency>
 </dependencies>
</dependencyManagement>

或者将Guava的依赖性从另一个依赖性中排除,而另一个依赖性也吸引了Guava。
未来的提示:考虑将maven enforcer插件添加到您的项目中,并检查依赖收敛性,以检查类似的问题:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-enforcer-plugin</artifactId>
            <version>1.4.1</version>
            <executions>
                <execution>
                    <id>enforce</id>
                    <configuration>
                        <rules>
                            <DependencyConvergence/>
                        </rules>
                    </configuration>
                    <goals>
                        <goal>enforce</goal>
                    </goals>
                    <phase>validate</phase>
                </execution>
            </executions>
        </plugin>
    </plugins>
...
</build>

相关问题