【FAQ】解决java.lang.NoSuchMethodError: org.json.JSONObject.toMap()Ljava/util/Map;

1. 问题

用json schema校验json数据的时候,遇到报错:

java.lang.NoSuchMethodError: org.json.JSONObject.toMap()Ljava/util/Map;
	at org.everit.json.schema.loader.SchemaLoader$SchemaLoaderBuilder.schemaJson(SchemaLoader.java:182)
	at org.everit.json.schema.loader.SchemaLoader.load(SchemaLoader.java:254)
	at org.everit.json.schema.loader.SchemaLoader.load(SchemaLoader.java:240)
	at com.alibaba.campaign.util.JSONUtil.validateJSONWithSchema(JSONUtil.java:56)

2. 解决办法

检查发现是由于maven饮用的org.json包太老,所以更新maven依赖:

<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20180130</version>
</dependency>

除了更新依赖,我还删除了旧的包,我的工程在idea中,删除方式如下:

  • 菜单栏 File > Project Structure > 选择Libraries
  • 找到较老的包,选择顶部的“-”号删除
  • 点击“OK”退出

下图仅是一个参考,我的工程中原来的包实际版本是:20140107 

 

3. 参考

问题参考链接:

https://github.com/everit-org/json-schema/issues/98

猜你喜欢

转载自blog.csdn.net/weixin_42534940/article/details/82787087