Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Getting java.lang.NoSuchMethodError: org.yaml.snakeyaml.Yaml.<init> while running spark based spring boot application

SnakeYaml jar present at classPath: snakeyaml-1.26.jar

2330 [main] ERROR org.springframework.boot.SpringApplication  - Application run failed
java.lang.NoSuchMethodError: org.yaml.snakeyaml.Yaml.<init>(Lorg/yaml/snakeyaml/constructor/BaseConstructor;Lorg/yaml/snakeyaml/representer/Representer;Lorg/yaml/snakeyaml/DumperOptions;Lorg/yaml/snakeyaml/LoaderOptions;Lorg/yaml/snakeyaml/resolver/Resolver;)V
    at org.springframework.boot.env.OriginTrackedYamlLoader.createYaml(OriginTrackedYamlLoader.java:71)
    at org.springframework.beans.factory.config.YamlProcessor.process(YamlProcessor.java:162)
    at org.springframework.boot.env.OriginTrackedYamlLoader.load(OriginTrackedYamlLoader.java:76)
    at org.springframework.boot.env.YamlPropertySourceLoader.load(YamlPropertySourceLoader.java:50)
    at org.springframework.boot.context.config.ConfigFileApplicationListener$Loader.loadDocuments(ConfigFileApplicationListener.java:607)
like image 279
IAmHere Avatar asked Dec 17 '25 12:12

IAmHere


2 Answers

I had a similar problem and my solution was to use snakeyaml in the exact same version as spring boot does.

In general a good trick is to import maven dependencies from org.springframework.boot:spring-boot-dependencies in order to avoid version incompatibilities.

If you're using mvn, add this under <dependencyManagement> in your pom:

      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>${spring.boot.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>

and then this under <dependencies>:

    <dependency>
      <groupId>org.yaml</groupId>
      <artifactId>snakeyaml</artifactId>
      <scope>runtime</scope>
    </dependency>

For example spring-boot-dependencies-2.3.6.RELEASE.pom uses snakeyaml in 1.26:

 <snakeyaml.version>1.26</snakeyaml.version>

Whereas spring-boot-dependencies-2.5.12.pom uses 1.28:

 <snakeyaml.version>1.28</snakeyaml.version>

And spring-boot-dependencies-2.6.1.pom uses 1.29:

 <snakeyaml.version>1.29</snakeyaml.version>

Hope this helps.

like image 143
Alexander Avatar answered Dec 20 '25 07:12

Alexander


I received this error when I updated snakeyaml from 1.33 to 2.0. You need to downgrade version to 1.33

    <dependency>
        <groupId>org.yaml</groupId>
        <artifactId>snakeyaml</artifactId>
        <version>1.33</version>
    </dependency>

link to mvn repo : https://mvnrepository.com/artifact/org.yaml/snakeyaml

like image 42
Tomasz Avatar answered Dec 20 '25 06:12

Tomasz



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!