升级后,Spring data mongodb在应用程序启动时崩溃

升级后,Spring data mongodb在应用程序启动时崩溃,mongodb,spring-data,spring-data-mongodb,Mongodb,Spring Data,Spring Data Mongodb,在tomcat中启动应用程序时出现以下错误: Caused by: java.lang.annotation.AnnotationFormatError: Invalid default: public abstract java.lang.Class org.springframework.data.mongodb.repository.config.EnableMongoRepositories.repositoryBaseClass() at java.lang.reflect.M

在tomcat中启动应用程序时出现以下错误:

Caused by: java.lang.annotation.AnnotationFormatError: Invalid default: public abstract java.lang.Class org.springframework.data.mongodb.repository.config.EnableMongoRepositories.repositoryBaseClass()
    at java.lang.reflect.Method.getDefaultValue(Method.java:612)
    at org.springframework.core.annotation.AnnotationUtils.registerDefaultValues(AnnotationUtils.java:1178)
    at org.springframework.core.type.classreading.RecursiveAnnotationAttributesVisitor.visitEnd(RecursiveAnnotationAttributesVisitor.java:42)
    at org.springframework.core.type.classreading.AnnotationAttributesReadingVisitor.visitEnd(AnnotationAttributesReadingVisitor.java:64)
    at org.springframework.asm.ClassReader.readAnnotationValues(ClassReader.java:1869)
    at org.springframework.asm.ClassReader.accept(ClassReader.java:657)
    at org.springframework.asm.ClassReader.accept(ClassReader.java:523)
    at org.springframework.core.type.classreading.SimpleMetadataReader.<init>(SimpleMetadataReader.java:64)
    at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:98)
    at org.springframework.core.type.classreading.CachingMetadataReaderFactory.getMetadataReader(CachingMetadataReaderFactory.java:102)
    at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.findCandidateComponents(ClassPathScanningCandidateComponentProvider.java:287)
    ... 50 more
在我升级到1.9之前,它在过去一直有效。什么会导致此错误?
非常感谢您提供的任何帮助

我怀疑您的Spring框架和Spring数据版本不兼容

请使用检查依赖项中是否存在冲突

升级到SpringData1.10.4应该与SpringFramework 2.3.8兼容。 或者,将Spring框架降级到4.2.9也可以

我还建议不要显式地将SpringDataCommons指定为一个依赖项,因为它无论如何都会作为一个临时依赖项被引入。这将使您少担心一个版本号


另外:您几乎肯定不想要一个
spring数据共享核心
这个工件已经过时,没有新版本了。

我怀疑您的spring框架和spring数据版本不兼容

请使用检查依赖项中是否存在冲突

升级到SpringData1.10.4应该与SpringFramework 2.3.8兼容。 或者,将Spring框架降级到4.2.9也可以

我还建议不要显式地将SpringDataCommons指定为一个依赖项,因为它无论如何都会作为一个临时依赖项被引入。这将使您少担心一个版本号


另外:您几乎肯定不想要
spring data commons core
此工件已经过时,并且没有新版本。

升级之前您使用的是什么版本?1.7.1;之后我升级到:1.10.3、2.0、1.10.0、1.9.1;所有这些都给了我同样的错误。我升级的唯一原因是1.7.1无法处理升级可以处理的partialFilterExpression。您可以使用spring framework 4.2.9版或spring data mongo 1.10.4版进行尝试吗?升级之前您使用的是什么版本?1.7.1;之后我升级到:1.10.3、2.0、1.10.0、1.9.1;所有这些都给了我同样的错误。我升级的唯一原因是因为1.7.1无法处理升级所能处理的partialFilterExpression。您可以用SpringFramework版本4.2.9或SpringDataMongo 1.10.4来尝试吗?更新了答案:您可能不想依赖过时的SpringDataCommons核心。非常感谢。我删除了对SpringDataCommons和SpringDataCommons核心的引用,它成功了!顺便说一句:我把它放在:SpringDataMongoDB->1.9.10.RELEASE和spring->4.3.8.RELEASE,非常感谢!更新了答案:您可能不想依赖过时的SpringDataCommons Core,非常感谢。我删除了对SpringDataCommons和SpringDataCommons核心的引用,它成功了!顺便说一句:我把它放在:SpringDataMongoDB->1.9.10.RELEASE和spring->4.3.8.RELEASE,非常感谢!
<properties>
    <spring.version>4.3.8.RELEASE</spring.version>
    <spring.data.version>1.9.10.RELEASE</spring.data.version>
    <spring.data.commons.version>1.7.0.RELEASE</spring.data.commons.version>
    <spring.data.commons.core.version>1.4.1.RELEASE</spring.data.commons.core.version>
    <log4j.version>1.2.17</log4j.version>
    <gson.version>2.3.1</gson.version>
    <servlet.version>3.1.0</servlet.version>
    <bson.version>3.4.2</bson.version>
    <commons.fileupload.version>1.3.1</commons.fileupload.version>
    <okhttp.version>3.5.0</okhttp.version>
    <mongo.java.driver.version>3.4.2</mongo.java.driver.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>

<dependencies>

    <!-- Spring -->

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

    <!-- JavaEE APIs -->

    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-mongodb</artifactId>
        <version>${spring.data.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-commons</artifactId>
        <version>${spring.data.commons.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-commons-core</artifactId>
        <version>${spring.data.commons.core.version}</version>
    </dependency>
    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>${gson.version}</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>${servlet.version}</version>
    </dependency>
    <dependency>
        <groupId>commons-fileupload</groupId>
        <artifactId>commons-fileupload</artifactId>
        <version>${commons.fileupload.version}</version>
    </dependency>
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>${log4j.version}</version>
    </dependency>
    <dependency>
        <groupId>com.squareup.okhttp3</groupId>
        <artifactId>okhttp</artifactId>
        <version>${okhttp.version}</version>
    </dependency>
    <dependency>
        <groupId>org.mongodb</groupId>
        <artifactId>mongo-java-driver</artifactId>
        <version>${mongo.java.driver.version}</version>
    </dependency>
    <dependency>
        <groupId>org.mongodb</groupId>
        <artifactId>bson</artifactId>
        <version>${bson.version}</version>
    </dependency>
</dependencies>
package com.somes.sns.persistence;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;
import org.springframework.data.mongodb.config.AbstractMongoConfiguration;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;

import com.mongodb.MongoClient;
import com.mongodb.MongoClientURI;

@Configuration
@PropertySource("classpath:mongodb.properties")
@EnableMongoRepositories("com.somes.sns.persistence.repository")
public class PersistenceConfig extends AbstractMongoConfiguration
{
    private static final String MONGODB_HOST = "mongodb.host";
    private static final String MONGODB_PORT = "mongodb.port";

    @Autowired
    Environment env;

    @Override
    protected String getDatabaseName()
    {
        return "MyDatabase";
    }

    @Override
    @Bean
    public MongoClient mongo() throws Exception
    {
        String mongoHost = env.getProperty(MONGODB_HOST);
        String mongoPort = env.getProperty(MONGODB_PORT);
        MongoClientURI mongoUri = new MongoClientURI("mongodb://" + mongoHost + ":" + mongoPort);
        MongoClient client = new MongoClient(mongoUri);
        client.setWriteConcern(WriteConcern.SAFE);
        return client;
    }

    @Override
    protected String getMappingBasePackage()
    {
        return "com.somes.sns.persistence.domain";
    }

    @Override
    @Bean
    public MongoTemplate mongoTemplate() throws Exception
    {
        return new MongoTemplate(mongo(), getDatabaseName());
    }
}