Reputation: 391
I updated Springboot version to 2.7.0, and after return me errors:
Description:
An attempt was made to call a method that does not exist. The attempt was made from the following location:
org.webjars.WebJarAssetLocator.scanForWebJars(WebJarAssetLocator.java:183)
The following method did not exist:
'io.github.classgraph.ClassGraph io.github.classgraph.ClassGraph.acceptPaths(java.lang.String[])'
The calling method's class, org.webjars.WebJarAssetLocator, was loaded from the following location:
jar:file:/home/gabriel/.m2/repository/org/webjars/webjars-locator-core/0.50/webjars-locator-core-0.50.jar!/org/webjars/WebJarAssetLocator.class
The called method's class, io.github.classgraph.ClassGraph, is available from the following locations:
jar:file:/home/gabriel/.m2/repository/io/github/classgraph/classgraph/4.8.69/classgraph-4.8.69.jar!/io/github/classgraph/ClassGraph.class
The called method's class hierarchy was loaded from the following locations:
io.github.classgraph.ClassGraph: file:/home/gabriel/.m2/repository/io/github/classgraph/classgraph/4.8.69/classgraph-4.8.69.jar
Action:
Correct the classpath of your application so that it contains compatible versions of the classes org.webjars.WebJarAssetLocator and io.github.classgraph.ClassGraph
This is my 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 https://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.7.0</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<groupId>re.brasuka</groupId>
<artifactId>bra</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>gto</name>
<description>Projeto do BRASUKA</description>
<properties>
<java.version>11</java.version>
<spring-cloud.version>2021.0.3-SNAPSHOT</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
</dependency>
<!-- Lib para Serealizar e Desserealizar Json -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
</dependency>
<!-- Lib para acesso a servidor SFTP-->
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.55</version>
</dependency>
<!-- Lib para converte arquivo em objeto -->
<dependency>
<groupId>com.univocity</groupId>
<artifactId>univocity-parsers</artifactId>
<version>2.9.0</version>
</dependency>
<!-- Documentação -->
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-ui</artifactId>
<version>1.4.8</version>
</dependency>
<!-- Registri e Gateway -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!-- Client FTP -->
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.6</version>
</dependency>
<!-- Criação de Json para retornos -->
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20201115</version>
</dependency>
<!-- Para gerar PDF -->
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.22</version>
</dependency>
<!-- Starter do Spring para envio de email -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/snapshot</url>
<releases>
<enabled>false</enabled>
</releases>
</repository>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
</project>
Can i fix this?
Upvotes: 29
Views: 42855
Reputation: 41
Just adding my ¢2 with some code sample. I upgraded an existing project to Spring boot 2.7.5 and received a similar "warning" as
"level":"WARN","thread":"main","logger":"org.springframework.boot.web.reactive.context.AnnotationConfigReactiveWebServerApplicationContext","message":"Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException:
....
nested exception is java.lang.NoSuchMethodError: 'io.github.classgraph.ClassGraph io.github.classgraph.ClassGraph.acceptPaths(java.lang.String[])'","context":"default"}
and prevented the app from starting.
I updated org.springdoc
version to the latest as in this page and it fixed the error. https://springdoc.org/#spring-webflux-support
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-webflux-ui</artifactId>
<version>1.6.12</version>
</dependency>
Upvotes: 3
Reputation: 2210
As stated in the other answers, it is indeed springdoc-openapi-ui making trouble here. I had various errors regarding WebJarAssetLocator and/or ClassGraph, which both resolved by also updating springdoc.
Now, with spring-boot 2.7.2 and spring-doc 1.6.9, everything runs smoothly again.
Upvotes: 15
Reputation: 191
Adding the following implementation to the build.gradle file also fixes the issue: implementation('org.springdoc:springdoc-openapi-ui:1.6.9')
Upvotes: 19
Reputation: 116111
There's an incompatibility in the transitive dependencies of org.springdoc:springdoc-openapi-ui
. It depends on both org.webjars:webjars-core-locator
and io.github.classgraph:classgraph
but their versions are incompatible.
Spring Boot's dependency management for webjars-core-locator
uses version 0.50
. webjars-core-locator
0.50
would use classgraph
4.8.139
by default but, due to the way that Maven resolves version conflicts, it's being downgraded to 4.8.69
.
You can fix the problem by restoring the use of 4.8.139
by adding some dependency management to your pom.xml
alongside your existing import of spring-cloud-dependencies
:
<dependencyManagement>
<dependencies>
<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>io.github.classgraph</groupId>
<artifactId>classgraph</artifactId>
<version>4.8.139</version>
</dependency>
</dependencies>
</dependencyManagement>
Upvotes: 49