maven 原因:java. lang. NoClassDefFoundError:org/springframework/数据/转换/自定义转换

e1xvtsh3  于 2023-01-08  发布在  Maven
关注(0)|答案(3)|浏览(177)

我正在使用MongoDB 4.2 并尝试将我的spring Boot 版本从 1.5.9.RELEASE 升级到 2.0.3.RELEASE。maven surefire插件版本是 2.22.0
我在执行
maven clean install -U
时遇到以下错误,

at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
at java.lang.Class.getMethod0(Class.java:3018)
at java.lang.Class.getMethod(Class.java:1784)
at org.apache.maven.surefire.util.ReflectionUtils.tryGetMethod(ReflectionUtils.java:60)
at org.apache.maven.surefire.common.junit3.JUnit3TestChecker.isSuiteOnly(JUnit3TestChecker.java:66)
at org.apache.maven.surefire.common.junit3.JUnit3TestChecker.isValidJUnit3Test(JUnit3TestChecker.java:61)
at org.apache.maven.surefire.common.junit3.JUnit3TestChecker.accept(JUnit3TestChecker.java:56)
at org.apache.maven.surefire.common.junit4.JUnit4TestChecker.accept(JUnit4TestChecker.java:53)
at org.apache.maven.surefire.util.DefaultScanResult.applyFilter(DefaultScanResult.java:102)
at org.apache.maven.surefire.junit4.JUnit4Provider.scanClassPath(JUnit4Provider.java:309)
at org.apache.maven.surefire.junit4.JUnit4Provider.setTestsToRun(JUnit4Provider.java:189)
at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:132)
at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:384)
at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:345)
at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:126)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:418)
Caused by: java.lang.ClassNotFoundException: org.springframework.data.convert.CustomConversions
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 18 more

我猜是兼容性问题。有什么提示吗?
注意:执行测试用例时出现问题。CustomConversions类似乎不可用,从而导致此问题。
pom.xml如下所示,

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.3.RELEASE</version>
  </parent>

  <groupId>*********</groupId>
  <artifactId>*********</artifactId>
  <packaging>pom</packaging>
  <version>*********</version>
  <name>${project.groupId}-${project.artifactId}</name>

  <prerequisites>
    <maven>3.0.0</maven>
  </prerequisites>

  <modules>
    <module>*</module>
    <module>*</module>
  </modules>

  <distributionManagement>
    <repository>
      <id>>******</</id>
      <name>>******</</name>
      <url>localhost</url>
    </repository>
    <snapshotRepository>
      <id>******</id>
      <name>******</name>
      <url>loaclhost</url>
    </snapshotRepository>
  </distributionManagement>

  <properties>
    <xmlbeans-version>2.2.0</xmlbeans-version>
    <freemarker-version>2.3.21</freemarker-version>
    <maven-surefire-plugin-version>2.22.0</maven-surefire-plugin-version>
    <maven.project.artifactId>${project.artifactId}</maven.project.artifactId>
    <commons-validator-version>1.5.0</commons-validator-version>
    <maven-site-plugin-version>3.4</maven-site-plugin-version>
    <maven-source-plugin-version>2.4</maven-source-plugin-version>
    <maven-compiler-plugin-version>3.3</maven-compiler-plugin-version>
    <slf4j-version>1.7.10</slf4j-version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.project.groupId>${project.groupId}</maven.project.groupId>
    <lombok.version>1.16.18</lombok.version>
    <maven-resources-plugin-version>2.7</maven-resources-plugin-version>
    <apache-tika-core-version>1.5</apache-tika-core-version>
    <logback-core-version>1.2.3</logback-core-version>
    <dozer-version>5.5.1</dozer-version>
    <json-version>20160810</json-version>
    <commons-io-version>2.4</commons-io-version>
    <maven-release-plugin-version>2.5.1</maven-release-plugin-version>
    <dom4j-version>1.6.1</dom4j-version>
    <poi-version>3.10.1</poi-version>
    <commons-lang3-version>3.3.2</commons-lang3-version>
    <commons-collections4>4.1</commons-collections4>
    <jackson-version>2.6.0</jackson-version>
    <hamcrest-version>1.3</hamcrest-version>
    <junit-version>4.12</junit-version>
    <maven-clean-plugin-version>2.6.1</maven-clean-plugin-version>
    <jacoco-maven-plugin-version>0.7.4.201502262128</jacoco-maven-plugin-version>
    <commons-fileupload-version>1.3.1</commons-fileupload-version>
    <javax.inject-version>1</javax.inject-version>
    <jta-api-jboss-version>1.0.0.Final</jta-api-jboss-version>
    <mockito-version>1.9.5</mockito-version>
    <source-code-level>1.8</source-code-level>
    <javax-validation-version>2.0.1.Final</javax-validation-version>
    <maven-deploy-plugin-version>2.8.2</maven-deploy-plugin-version>
    <httpcomponent.version>4.3.6</httpcomponent.version>
    <maven-javadoc-plugin-version>2.10.1</maven-javadoc-plugin-version>
    <maven-install-plugin-version>2.5.2</maven-install-plugin-version>
    <maven.project.version>${project.version}</maven.project.version>
    <maven-shade-plugin-version>2.4.1</maven-shade-plugin-version>
    <mongobee-version>0.10</mongobee-version>
    <joda-time-version>2.7</joda-time-version>
    <google-guava-version>18.0</google-guava-version>
    <bcprov-jdk15on-version>1.54</bcprov-jdk15on-version>
    <maven-jar-plugin-version>2.5</maven-jar-plugin-version>
    <fongo-version>2.0.6</fongo-version>
    <timestamp>${maven.build.timestamp}</timestamp>
    <maven.build.timestamp.format>yyyy-MM-dd HH:mm:ss</maven.build.timestamp.format>
    <commons-net-version>3.6</commons-net-version>
    <mock-ftp-server>2.3</mock-ftp-server>
    <spring-cloud.version>Finchley.RELEASE</spring-cloud.version>
    <common-plugin.version>0.0.1</common-plugin.version>
    <java-string-similarity-version>1.1.0</java-string-similarity-version>
    <feign-form>2.2.0</feign-form>
    <tomakehurst-wiremock>2.5.1</tomakehurst-wiremock>
    <spring-webmvc>4.3.13.RELEASE</spring-webmvc>
    <spring-rabbit-version>1.5.0.RELEASE</spring-rabbit-version>
  </properties>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>2.0.3.RELEASE</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-validation</artifactId>
        <version>2.0.3.RELEASE</version>
      </dependency>
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-properties-migrator</artifactId>
      </dependency>
      <dependency>
        <groupId>commons-validator</groupId>
        <artifactId>commons-validator</artifactId>
        <version>${commons-validator-version}</version>
      </dependency>
      <dependency>
        <groupId>org.bouncycastle</groupId>
        <artifactId>bcprov-jdk15on</artifactId>
        <version>${bcprov-jdk15on-version}</version>
        <scope>compile</scope>
      </dependency>
      <dependency>
        <groupId>net.sf.dozer</groupId>
        <artifactId>dozer</artifactId>
        <version>${dozer-version}</version>
      </dependency>
      <dependency>
        <groupId>org.freemarker</groupId>
        <artifactId>freemarker</artifactId>
        <version>${freemarker-version}</version>
      </dependency>
      <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-core</artifactId>
        <version>${logback-core-version}</version>
      </dependency>
      <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>${logback-core-version}</version>
      </dependency>
      <dependency>
        <groupId>javax.inject</groupId>
        <artifactId>javax.inject</artifactId>
        <version>${javax.inject-version}</version>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jcl-over-slf4j</artifactId>
        <version>${slf4j-version}</version>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${slf4j-version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.tika</groupId>
        <artifactId>tika-core</artifactId>
        <version>${apache-tika-core-version}</version>
      </dependency>
      <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>${commons-io-version}</version>
      </dependency>
      <dependency>
        <groupId>commons-fileupload</groupId>
        <artifactId>commons-fileupload</artifactId>
        <version>${commons-fileupload-version}</version>
        <scope>runtime</scope>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>${jackson-version}</version>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
        <version>${jackson-version}</version>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>${jackson-version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>${commons-lang3-version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-collections4</artifactId>
        <version>${commons-collections4}</version>
      </dependency>
      <dependency>
        <groupId>joda-time</groupId>
        <artifactId>joda-time</artifactId>
        <version>${joda-time-version}</version>
      </dependency>
      <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>${google-guava-version}</version>
      </dependency>
      <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava-testlib</artifactId>
        <version>${google-guava-version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>${junit-version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.hamcrest</groupId>
        <artifactId>hamcrest-core</artifactId>
        <version>${hamcrest-version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.hamcrest</groupId>
        <artifactId>hamcrest-all</artifactId>
        <version>${hamcrest-version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-all</artifactId>
        <version>${mockito-version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.jboss.spec.javax.transaction</groupId>
        <artifactId>jboss-transaction-api_1.2_spec</artifactId>
        <version>${jta-api-jboss-version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>${poi-version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>${poi-version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml-schemas</artifactId>
        <version>${poi-version}</version>
      </dependency>
      <dependency>
        <groupId>xmlbeans</groupId>
        <artifactId>xbean</artifactId>
        <version>${xmlbeans-version}</version>
      </dependency>
      <dependency>
        <groupId>dom4j</groupId>
        <artifactId>dom4j</artifactId>
        <version>${dom4j-version}</version>
      </dependency>
      <dependency>
        <groupId>com.github.fakemongo</groupId>
        <artifactId>fongo</artifactId>
        <version>${fongo-version}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>${httpcomponent.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpmime</artifactId>
        <version>${httpcomponent.version}</version>
      </dependency>
      <dependency>
        <groupId>com.github.mongobee</groupId>
        <artifactId>mongobee</artifactId>
        <version>${mongobee-version}</version>
        <exclusions>
          <exclusion>
            <artifactId>mongo-java-driver</artifactId>
            <groupId>org.mongodb</groupId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>${lombok.version}</version>
      </dependency>
      <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-commons</artifactId>
        <version>1.13.7.RELEASE</version>
      </dependency>
      <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>2.7.0</version>
      </dependency>
      <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>2.7.0</version>
      </dependency>
      <dependency>
        <groupId>commons-net</groupId>
        <artifactId>commons-net</artifactId>
        <version>${commons-net-version}</version>
      </dependency>
      <dependency>
        <groupId>org.mockftpserver</groupId>
        <artifactId>MockFtpServer</artifactId>
        <version>${mock-ftp-server}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
        <version>${javax-validation-version}</version>
        <scope>compile</scope>
      </dependency>
      <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-dependencies</artifactId>
        <version>${spring-cloud.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>info.debatty</groupId>
        <artifactId>java-string-similarity</artifactId>
        <version>${java-string-similarity-version}</version>
      </dependency>
      <dependency>
        <groupId>io.github.openfeign.form</groupId>
        <artifactId>feign-form</artifactId>
        <version>${feign-form}</version>
      </dependency>
      <dependency>
        <groupId>com.github.tomakehurst</groupId>
        <artifactId>wiremock-standalone</artifactId>
        <version>${tomakehurst-wiremock}</version>
        <scope>test</scope>
      </dependency>
      <dependency>
        <groupId>org.springframework.kafka</groupId>
        <artifactId>spring-kafka</artifactId>
        <version>1.1.7.RELEASE</version>
      </dependency>
      <dependency>
        <groupId>org.springframework.amqp</groupId>
        <artifactId>spring-rabbit</artifactId>
        <version>${spring-rabbit-version}</version>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <artifactId>maven-shade-plugin</artifactId>
          <version>${maven-shade-plugin-version}</version>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>jaxb2-maven-plugin</artifactId>
          <version>1.6</version>
          <executions>
            <execution>
              <id>xjc</id>
              <goals>
                <goal>xjc</goal>
              </goals>
            </execution>
          </executions>
          <configuration>
            <schemaDirectory>${project.basedir}/src/main/resources/</schemaDirectory>
            <outputDirectory>${project.basedir}/src/main/java</outputDirectory>
            <clearOutputDir>false</clearOutputDir>
          </configuration>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>${maven-compiler-plugin-version}</version>
          <configuration>
            <source>${source-code-level}</source>
            <target>${source-code-level}</target>
            <compilerArgument>-Xlint:all</compilerArgument>
          </configuration>
        </plugin>
        <plugin>
          <artifactId>maven-source-plugin</artifactId>
          <version>${maven-source-plugin-version}</version>
        </plugin>
        <plugin>
          <artifactId>maven-javadoc-plugin</artifactId>
          <version>${maven-javadoc-plugin-version}</version>
          <executions>
            <execution>
              <id>attach-javadocs</id>
              <goals>
                <goal>jar</goal>
                <goal>test-jar</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>${maven-clean-plugin-version}</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>${maven-surefire-plugin-version}</version>
          <configuration>
            <includes>
              <include>**/*Tests.java</include>
              <include>**/*Test.java</include>
            </includes>
            <excludes>
              <exclude>**/Abstract*.java</exclude>
            </excludes>
          </configuration>
        </plugin>
        <plugin>
          <artifactId>maven-site-plugin</artifactId>
          <version>${maven-site-plugin-version}</version>
        </plugin>
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>${maven-resources-plugin-version}</version>
        </plugin>
        <plugin>
          <artifactId>maven-jar-plugin</artifactId>
          <version>${maven-jar-plugin-version}</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>${maven-install-plugin-version}</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>${maven-deploy-plugin-version}</version>
        </plugin>
        <plugin>
          <artifactId>maven-release-plugin</artifactId>
          <version>${maven-release-plugin-version}</version>
          <configuration>
            <checkModificationExcludes>
              <checkModificationExclude>client-java-sdk/dependency-reduced-pom.xml</checkModificationExclude>
            </checkModificationExcludes>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.jacoco</groupId>
          <artifactId>jacoco-maven-plugin</artifactId>
          <version>${jacoco-maven-plugin-version}</version>
        </plugin>
      </plugins>
    </pluginManagement>

  </build>
</project>
b91juud3

b91juud31#

您使用的是什么版本的spring-data-mongodb?我假设较新版本的spring Boot 不向后兼容spring-data-mongodb

rqmkfv5c

rqmkfv5c2#

看起来你可能缺少了一个必要的依赖项。你能试着把这个添加到你的pom中看看是否有帮助吗?

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-commons</artifactId>
    <version>2.3.0.RELEASE</version>
</dependency>
pqwbnv8z

pqwbnv8z3#

如果用户无法使用spring-boot版本1.x,则如other answers中所述- Spring Data 2.x与Spring Boot 1.x不兼容,我们需要更新配置,如下所示

public @Bean MongoDbFactory mongoDbFactory() throws UnknownHostException {
    MongoClientURI mongoClientURI = new MongoClientURI(uri);
    return new SimpleMongoDbFactory(mongoClientURI);
  }

已使用 Spring Boot 1.5.6.RELEASE和spring-data-mongodb版本1.5.22.RELEASE对此进行了测试
更多信息请参考spring data docs。

相关问题