Qualcuno ha caricato con successo un file YAML usando SnakeYAML da un repository Maven locale?

StackOverflow https://stackoverflow.com/questions/443264

  •  22-07-2019
  •  | 
  •  

Domanda

Se faccio riferimento al vaso SnakeYAML direttamente da un programma di test (vedi in basso), tutto funziona. Se sono all'interno del mio progetto creato da Maven, ottengo il seguente output dai miei test unitari:

java.lang.NoSuchMethodError: java.util.LinkedList.push(Ljava/lang/Object;)V
    at org.yaml.snakeyaml.scanner.ScannerImpl.addIndent(ScannerImpl.java:482)
    at org.yaml.snakeyaml.scanner.ScannerImpl.fetchBlockEntry(ScannerImpl.java:653)
    at org.yaml.snakeyaml.scanner.ScannerImpl.fetchMoreTokens(ScannerImpl.java:268)
    at org.yaml.snakeyaml.scanner.ScannerImpl.checkToken(ScannerImpl.java:178)
    at org.yaml.snakeyaml.parser.ParserImpl$ParseImplicitDocumentStart.produce(ParserImpl.java:213)
    at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:172)
    at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:143)
    at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:163)
    at org.yaml.snakeyaml.composer.Composer.getSingleNode(Composer.java:66)
    at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:60)
    at org.yaml.snakeyaml.Loader.load(Loader.java:35)
    at org.yaml.snakeyaml.Yaml.load(Yaml.java:134)

Dato che Maven non è riuscito a trovare SnakeYAML nei repository centrali, l'ho installato manualmente nel mio repository locale. Nel caso in cui sia importante, sono su un Mac con SnakeYAML 0.9 e Maven 2.0.9.

File YAML di esempio

- 
    accountCode: foo
    accountId: 1
    email: foo@bar.com
    userId: 1

Programma di test di lavoro

import java.io.*;
import java.util.*;

import org.yaml.snakeyaml.Yaml;

/**
 * Testing SnakeYAML.
 *
 * @author Hank Gay
 */
public final class Foo {
    public static void main(final String[] args) throws Exception {
        final Yaml yaml = new Yaml();
        Reader reader = null;
        try {
            reader = new FileReader("/tmp/foo.yaml");
            System.out.println(yaml.load(reader));
        } catch (final FileNotFoundException fnfe) {
            System.err.println("We had a problem reading the YAML from the file because we couldn't find the file." + fnfe);
        } finally {
            if (null != reader) {
                try {
                    reader.close();
                } catch (final IOException ioe) {
                    System.err.println("We got the following exception trying to clean up the reader: " + ioe);
                }
            }
        }
    }
}
È stato utile?

Soluzione

Sembra un problema con la versione JDK: LinkedList # push era introdotto in Java 6 .

Prova a impostare JAVA_HOME sulla versione corretta prima di eseguire Maven.

Altri suggerimenti

risolto nella versione 1.0rc1

Tutte le dipendenze Java 6 vengono rimosse da SnakeYAML.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top