java.lang.NoClassDefFoundError 在 spring 数据卡桑德拉项目中
java.lang.NoClassDefFoundError in spring data cassandra project
我是 spring 数据项目的新手,我正在开发示例应用程序。我在部署我的 spring data cassandra 项目时出现以下异常。
Caused by: java.lang.NoClassDefFoundError: org/springframework/core/ReactiveTypeDescriptor
... 58 common frames omitted
Caused by: java.lang.ClassNotFoundException: org.springframework.core.ReactiveTypeDescriptor
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1285) ~[catalina.jar:8.5.15]
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1119) ~[catalina.jar:8.5.15]
... 58 common frames omitted
我的仓库class如下,
public interface UserDao extends CassandraRepository<User, Long> {
<S extends User> S save(S entity);
Optional<User> findById(Long primaryKey);
}
Spring 配置,
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:cassandra="http://www.springframework.org/schema/data/cassandra"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
http://www.springframework.org/schema/data/cassandra
http://www.springframework.org/schema/data/cassandra/spring-cassandra.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<context:component-scan base-package="advertise"/>
<mvc:annotation-driven/>
<context:property-placeholder location="classpath:system.properties,classpath:cassandra.properties"
ignore-resource-not-found="true"
ignore-unresolvable="true"/>
<!--Common beans-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/"/>
<property name="suffix" value=".jsp"/>
</bean>
<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"/>
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="50000000"/>
</bean>
<mvc:resources mapping="/css/**" location="/css"/>
<mvc:resources mapping="/js/**" location="/js"/>
<mvc:resources mapping="/fonts/**" location="/fonts"/>
<mvc:resources mapping="/images/**" location="/images"/>
<mvc:resources mapping="/uploads/**" location="file:/${upload.dir}"/>
<!-- Default bean name is 'cassandraCluster' -->
<!--<cassandra:cluster contact-points="${cassandra.contactpoints}" port="${cassandra.port}">
<cassandra:keyspace action="CREATE_DROP" name="${cassandra.keyspace}" />
</cassandra:cluster>
<!– Default bean name is 'cassandraSession' –>
<cassandra:session keyspace-name="${cassandra.keyspace}" schema-action="NONE" />-->
<!-- REQUIRED: The Cassandra Cluster -->
<cassandra:cluster id="cluster" contact-points="${cassandra.contactpoints}" port="${cassandra.port}" />
<!-- REQUIRED: The Cassandra Session, built from the Cluster, and attaching
to a keyspace -->
<cassandra:session id="session" keyspace-name="${cassandra.keyspace}" cluster-ref="cluster" />
<!-- REQUIRED: The Default Cassandra Mapping Context used by CassandraConverter -->
<cassandra:mapping>
<cassandra:user-type-resolver keyspace-name="${cassandra.keyspace}" />
</cassandra:mapping>
<!-- REQUIRED: The Default Cassandra Converter used by CassandraTemplate -->
<cassandra:converter />
<!-- REQUIRED: The Cassandra Template is the building block of all Spring
Data Cassandra -->
<cassandra:template id="cassandraTemplate" session-ref="session" />
<!-- OPTIONAL: If you are using Spring Data for Apache Cassandra Repositories, add
your base packages to scan here -->
<cassandra:repositories base-package="advertise.orm.d ao" cassandra-template-ref="cassandraTemplate" />
相关依赖,
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-cassandra</artifactId>
<version>2.0.3.RELEASE</version>
</dependency>
- Java版本:1.8
- 部署容器:tomcat8
我的spring版本是4.2.2.RELEASE和springdata cassandra版本是2.0.3.RELEASE.是这个错误是因为版本不匹配?还是因为我的其他错误?
如果您能帮我解决这个问题,我将不胜感激。谢谢。
这肯定是版本不匹配。 ReactiveTypeDescriptor
class 自 Spring 5.0
发布以来就存在。参考here。
您可以尝试将 Spring 版本升级到 5.0.0
我是 spring 数据项目的新手,我正在开发示例应用程序。我在部署我的 spring data cassandra 项目时出现以下异常。
Caused by: java.lang.NoClassDefFoundError: org/springframework/core/ReactiveTypeDescriptor
... 58 common frames omitted
Caused by: java.lang.ClassNotFoundException: org.springframework.core.ReactiveTypeDescriptor
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1285) ~[catalina.jar:8.5.15]
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1119) ~[catalina.jar:8.5.15]
... 58 common frames omitted
我的仓库class如下,
public interface UserDao extends CassandraRepository<User, Long> {
<S extends User> S save(S entity);
Optional<User> findById(Long primaryKey);
}
Spring 配置,
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:cassandra="http://www.springframework.org/schema/data/cassandra"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
http://www.springframework.org/schema/data/cassandra
http://www.springframework.org/schema/data/cassandra/spring-cassandra.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<context:component-scan base-package="advertise"/>
<mvc:annotation-driven/>
<context:property-placeholder location="classpath:system.properties,classpath:cassandra.properties"
ignore-resource-not-found="true"
ignore-unresolvable="true"/>
<!--Common beans-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/"/>
<property name="suffix" value=".jsp"/>
</bean>
<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"/>
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="50000000"/>
</bean>
<mvc:resources mapping="/css/**" location="/css"/>
<mvc:resources mapping="/js/**" location="/js"/>
<mvc:resources mapping="/fonts/**" location="/fonts"/>
<mvc:resources mapping="/images/**" location="/images"/>
<mvc:resources mapping="/uploads/**" location="file:/${upload.dir}"/>
<!-- Default bean name is 'cassandraCluster' -->
<!--<cassandra:cluster contact-points="${cassandra.contactpoints}" port="${cassandra.port}">
<cassandra:keyspace action="CREATE_DROP" name="${cassandra.keyspace}" />
</cassandra:cluster>
<!– Default bean name is 'cassandraSession' –>
<cassandra:session keyspace-name="${cassandra.keyspace}" schema-action="NONE" />-->
<!-- REQUIRED: The Cassandra Cluster -->
<cassandra:cluster id="cluster" contact-points="${cassandra.contactpoints}" port="${cassandra.port}" />
<!-- REQUIRED: The Cassandra Session, built from the Cluster, and attaching
to a keyspace -->
<cassandra:session id="session" keyspace-name="${cassandra.keyspace}" cluster-ref="cluster" />
<!-- REQUIRED: The Default Cassandra Mapping Context used by CassandraConverter -->
<cassandra:mapping>
<cassandra:user-type-resolver keyspace-name="${cassandra.keyspace}" />
</cassandra:mapping>
<!-- REQUIRED: The Default Cassandra Converter used by CassandraTemplate -->
<cassandra:converter />
<!-- REQUIRED: The Cassandra Template is the building block of all Spring
Data Cassandra -->
<cassandra:template id="cassandraTemplate" session-ref="session" />
<!-- OPTIONAL: If you are using Spring Data for Apache Cassandra Repositories, add
your base packages to scan here -->
<cassandra:repositories base-package="advertise.orm.d ao" cassandra-template-ref="cassandraTemplate" />
相关依赖,
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-cassandra</artifactId>
<version>2.0.3.RELEASE</version>
</dependency>
- Java版本:1.8
- 部署容器:tomcat8
我的spring版本是4.2.2.RELEASE和springdata cassandra版本是2.0.3.RELEASE.是这个错误是因为版本不匹配?还是因为我的其他错误? 如果您能帮我解决这个问题,我将不胜感激。谢谢。
这肯定是版本不匹配。 ReactiveTypeDescriptor
class 自 Spring 5.0
发布以来就存在。参考here。
您可以尝试将 Spring 版本升级到 5.0.0