在Java中加载YAML
我正在尝试使用以下代码读取Java中的YAML文件:在Java中加载YAML,java,java-8,yaml,java-stream,Java,Java 8,Yaml,Java Stream,我正在尝试使用以下代码读取Java中的YAML文件: public class LoadFile { public static void main(String[] args) throws IOException { Yaml yaml = new Yaml(); InputStream inputStream = LoadFile.class .getClassLoader() .getResourceAsS
public class LoadFile {
public static void main(String[] args) throws IOException {
Yaml yaml = new Yaml();
InputStream inputStream = LoadFile.class
.getClassLoader()
.getResourceAsStream("ABSOLUTE PATH TO YAML");
Object obj = yaml.load(inputStream);
System.out.println(obj);
}
}
但我得到了这个例外,我不明白为什么会发生
线程“main”org.yaml.snakeyaml.error.YAMLException:java.io.IOException:流关闭中出现异常
问题的原因并不明显,但有一些东西需要检查: 1-确保路径正确 2-确保文件格式正确 旁注:
您可以将对象更改为
映射
,以便更好地进行强制转换getResourceAsStream是否返回流或null?您的路径几乎肯定是错误的,导致getResourceAsStream
返回null
。这真的是您的完整代码吗?我在使用loadAll
加载多个YAML文档时看到过这种情况,直到输入流关闭后才处理结果。当loadAll
在try with resources块中并且结果在块外使用时,可能会发生这种情况。这可能也会发生在加载时,虽然在一个简单的测试中,使用一个小的YAML文件,它不会发生。另外,您使用的snakeyaml版本是什么?我在测试中使用了1.26。您不知道YAML文件是否可以加载到映射中。