Кто-нибудь успешно загрузил файл YAML, используя SnakeYAML из локального репозитория Maven? - PullRequest
1 голос
/ 14 января 2009

Если я ссылаюсь на банку SnakeYAML непосредственно из тестовой программы (см. Внизу), все работает. Если я нахожусь в моем проекте, созданном Maven, я получаю следующий вывод из моих модульных тестов:

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)

Поскольку Maven не смог найти SnakeYAML в центральном репо, я вручную установил его в локальное репо. Если это имеет значение, я использую SnakeYAML 0.9 и Maven 2.0.9.

Образец файла YAML

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

Рабочая программа испытаний

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);
                }
            }
        }
    }
}

Ответы [ 2 ]

3 голосов
/ 14 января 2009

Похоже на проблему версии JDK: LinkedList#push был введен в Java 6 .

Попробуйте установить JAVA_HOME на правильную версию перед запуском Maven.

2 голосов
/ 16 января 2009

исправлено в версии 1.0rc1

Все зависимости Java 6 удалены из SnakeYAML.

...