java - Error in reading yaml file using `snakeyaml`
问题描述
I am getting Exception in thread "main" org.yaml.snakeyaml.error.YAMLException: java.io.IOException: Stream closed
when reading yaml file in my code:
Below is my project structure:
-rc
- main
- java
- MyMainClass
- resources
- application.yaml
Here is the sample code:
public class LoadYaml {
private static final Logger LOGGER = LoggerFactory.getLogger(LoadYaml.class);
public void loadYaml() {
Yaml yaml = new Yaml(new Constructor(Config.class));
InputStream inputStream = this.getClass()
.getClassLoader()
.getResourceAsStream("resources/application.yaml");
Config config = yaml.load(inputStream);
LOGGER.info(config.toString());
}
Below is my custom class for yaml:
package org.finra.dapi.parttioncleanup;
import java.util.List;
public class Config {
private String url;
private String userName;
private String pwsKey;
private List<Tables> tables;
....getters and setters
Error stack:
Exception in thread "main" org.yaml.snakeyaml.error.YAMLException: java.io.IOException: Stream closed
at org.yaml.snakeyaml.reader.StreamReader.update(StreamReader.java:218)
at org.yaml.snakeyaml.reader.StreamReader.ensureEnoughData(StreamReader.java:176)
at org.yaml.snakeyaml.reader.StreamReader.ensureEnoughData(StreamReader.java:171)
at org.yaml.snakeyaml.reader.StreamReader.peek(StreamReader.java:126)
at org.yaml.snakeyaml.scanner.ScannerImpl.scanToNextToken(ScannerImpl.java:1177)
at org.yaml.snakeyaml.scanner.ScannerImpl.fetchMoreTokens(ScannerImpl.java:287)
at org.yaml.snakeyaml.scanner.ScannerImpl.checkToken(ScannerImpl.java:227)
at org.yaml.snakeyaml.parser.ParserImpl$ParseImplicitDocumentStart.produce(ParserImpl.java:195)
at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:158)
at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:148)
at org.yaml.snakeyaml.composer.Composer.getSingleNode(Composer.java:107)
at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:139)
at org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:524)
at org.yaml.snakeyaml.Yaml.load(Yaml.java:452)
at org.finra.dapi.parttioncleanup.LoadYaml.loadYaml(LoadYaml.java:23)
at org.finra.dapi.parttioncleanup.LambdaHandler.main(LambdaHandler.java:25)
Caused by: java.io.IOException: Stream closed
at java.io.PushbackInputStream.ensureOpen(PushbackInputStream.java:74)
at java.io.PushbackInputStream.read(PushbackInputStream.java:166)
at org.yaml.snakeyaml.reader.UnicodeReader.init(UnicodeReader.java:92)
at org.yaml.snakeyaml.reader.UnicodeReader.read(UnicodeReader.java:124)
at org.yaml.snakeyaml.reader.StreamReader.update(StreamReader.java:183)
... 15 more
Any help would be appreciated, thank you
解决方案
推荐阅读
- c# - 我在 C# 服务结束时收到错误 1053。我该如何阻止它?
- azure-devops - 一个特定存储帐户的 Arm 模板部署失败并出现 409 错误
- c++ - 递归函数中的运行时错误:在抛出“std::bad_alloc”what() 的实例后调用终止:std::bad_alloc
- asp.net-core - 以编程方式为 ApplicationsInsights 设置不同的 InstrumentationKey
- java - 当我将领域数据库本地存储在文件夹中时,我的应用程序在 android 11 上崩溃?
- flutter - 在 SingleChildScrollView 小部件中将小部件扩展尺寸设为最小高度
- pandas - 分组排序内的 Pandas 多索引系列
- python - 为我的项目创建了注册页面并使用了用户模型,但登录后数据未保存在管理员中
- javascript - 如何指定特定区域的不透明度
- sql - 检测间隙并创建缺失的时间段行