首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Snakeyaml:无法为

Snakeyaml:无法为
EN

Stack Overflow用户
提问于 2020-08-28 04:38:02
回答 1查看 721关注 0票数 1

我有一个yaml文件要作为参数传递给java类。但它却被抛到了异常之下:

日志

代码语言:javascript
复制
Caused by: Cannot create property=heartbeatThreshold for JavaBean=UdsConfigurationBean{jdbcDriverClassString='org.mariadb.jdbc.Driver', sparkConfigFile='spark/spark-local.conf'}
 in 'reader', line 15, column 3:
      jdbcDriverClassString: org.maria ... 
      ^
Unable to find property 'heartbeatThreshold' on class: MyClass
 in 'reader', line 36, column 23:
      heartbeatThreshold: 60000000
                          ^

    at org.yaml.snakeyaml.constructor.Constructor$ConstructMapping.constructJavaBean2ndStep(Constructor.java:292)
    at org.yaml.snakeyaml.constructor.Constructor$ConstructMapping.construct(Constructor.java:171)
    at org.yaml.snakeyaml.constructor.BaseConstructor.constructObjectNoCheck(BaseConstructor.java:230)
    at org.yaml.snakeyaml.constructor.BaseConstructor.constructObject(BaseConstructor.java:219)
    at org.yaml.snakeyaml.constructor.Constructor$ConstructMapping.constructJavaBean2ndStep(Constructor.java:269)
    ... 12 more
Caused by: org.yaml.snakeyaml.error.YAMLException: Unable to find property 'heartbeatThreshold' on class: MyClass
    at org.yaml.snakeyaml.introspector.PropertyUtils.getProperty(PropertyUtils.java:159)
    at org.yaml.snakeyaml.introspector.PropertyUtils.getProperty(PropertyUtils.java:148)
    at org.yaml.snakeyaml.constructor.Constructor$ConstructMapping.getProperty(Constructor.java:309)
    at org.yaml.snakeyaml.constructor.Constructor$ConstructMapping.constructJavaBean2ndStep(Constructor.java:230)
    ... 16 more

我的分析:

  1. MyClass被打包为jar,它适用于另一个项目,因此我的yaml文件应该有问题。
  2. Yaml验证已经通过,并且似乎所有变量都在使用camelCase。根据我的发现,PropertyUtils对此异常有两次检查,如果属性值为null(与日志不同)和isWritable(未得到此部分)
  3. for jdbcDriverClassString,错误指示为名称,而heartbeatThreshold值为其值。

G 210

你能帮我弄清楚吗。我会非常感激的。

Yaml档案:

代码语言:javascript
复制
kafka:
  kafkaServers: ${udsKafkaEpfConfigurationBean.kafka.kafkaServers}
  kafkaPrincipal: ${udsKafkaEpfConfigurationBean.kafka.kafkaPrincipal}
  kafkaKeytab: ${udsKafkaEpfConfigurationBean.kafka.kafkaKeytab}
  kafkaEnvironment: ${udsKafkaEpfConfigurationBean.kafka.kafkaEnvironment}
  

storage:
  jdbcDriverClassString: ${memsql.driver}   
  initializationStoresGeneration: true
  heartbeatThreshold: ${MyCLass.kafka.heartbeatThreshold}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-25 06:45:19

对于我来说,向yaml中添加Skip缺失属性属性可以解决以下问题:

代码语言:javascript
复制
Yaml = new Yaml()

更改为

代码语言:javascript
复制
Representer represent = new Representer()
represent.getPropertyUtils().setSkipMissingProperties(true)
Yaml yaml = new Yaml(represent)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63627539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档