SnakeYAML:似乎不起作用

时间:2012-07-02 22:18:39

标签: java yaml snakeyaml

我正在关注提到的教程 - http://code.google.com/p/snakeyaml/wiki/Documentation#Tutorial

我的代码看起来像

public class Utilities {
    private static final String YAML_PATH = "/problems/src/main/resources/input.yaml";

    public static Map<String, Object> getMapFromYaml() {
        Yaml yaml = new Yaml();
        Map<String, Object> map = (Map<String, Object>) yaml.load(YAML_PATH);
        System.out.println(map);
        return map;
    }

    public static void main(String args[]) {
        getMapFromYaml();
    }
}  

我的YAML文件看起来像

sorting
  01: [10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]  

当我运行程序时,我看到了

Exception in thread "main" java.lang.ClassCastException: java.lang.String cannot be cast to java.util.Map
    at com.ds.utilities.Utilities.getMapFromYaml(Utilities.java:19)
    at com.ds.utilities.Utilities.main(Utilities.java:25)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)

Process finished with exit code 1

如何解决此问题以使其有效?

1 个答案:

答案 0 :(得分:-1)

效果很好

public class RuntimeInput {
    private final Map<String, Object> RUNTIME_INPUT;

    private static final String SORTING = "sorting";
    private static final String YAML_PATH = "/src/main/resources/input.yaml";


    public RuntimeInput() {
        RUNTIME_INPUT = getMapFromYaml();
    }

    public static Map<String, Object> getMapFromYaml() {
        Yaml yaml = new Yaml();
        Reader reader = null;
        Map<String, Object> map = null;
        try {
            reader = new FileReader(YAML_PATH);
            map = (Map<String, Object>) 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);
                }
            }
        }
        return map;
    }

    public Map<String, Object> getSortingDataInput() {
        return (Map<String, Object>) RUNTIME_INPUT.get(SORTING);
    }

    public static void main(String args[]) {
        RuntimeInput runtimeInput = new RuntimeInput();
        System.out.println(Arrays.asList(runtimeInput.getSortingDataInput()));
    }
}