当前位置: 首页 > 面试题库 >

JSON解析器-java.lang.NoSuchFieldError:defaultReader

宫铭
2023-03-14
问题内容

我正在使用JSON解析器提取值,并且正在使用以下jar json-
path-2.1.0,当我调用在weblogic服务器上部署为webservice的用例时,出现以下错误:从json字符串中提取值,效果很好,但是用例的服务器版本引起了问题。我不确定耳朵中是否还有其他罐子会对这产生负面影响

SEVERE: defaultReader
java.lang.NoSuchFieldError: defaultReader
at com.jayway.jsonpath.spi.json.JsonSmartJsonProvider.<init>(JsonSmartJsonProvider.java:39)
at com.jayway.jsonpath.internal.DefaultsImpl.jsonProvider(DefaultsImpl.java:21)
at com.jayway.jsonpath.Configuration.defaultConfiguration(Configuration.java:174)
at com.jayway.jsonpath.internal.JsonContext.<init>(JsonContext.java:52)
at com.jayway.jsonpath.JsonPath.parse(JsonPath.java:596)

问题答案:

偶然发现了同样的问题。

它不起作用的原因不是JDK8。之所以遇到此问题,是因为weblogic 12.2.1.X捆绑了一些旧版本的json-smart。

在我的机器上,可以在这里找到:jar:file:/
C:/dev/WLS_12_2_1_2_0/oracle_common/modules/net.minidev.json-
smart.jar!/net/minidev/json/JSONValue.class

现在,如果您使用的是依赖于json-smart的库,例如json-path,那么默认情况下,容器将使用其内置模块之一加载所需的类。

您遇到的麻烦似乎是您的json路径所依赖的JSONValue类似乎具有此defaultReder字段。这是正在爆炸的凝块的片段。

 public JsonSmartJsonProvider() {
        this(JSONParser.MODE_PERMISSIVE, JSONValue.defaultReader.DEFAULT_ORDERED);
    }

JSONValue.defaultReader

似乎在Weblogs较早的系统类加载器类上无效。

您可以通过将如下所示的内容放入weblogic.xml部署描述符中来告诉容器使用您要打包的内容:

<wls:prefer-application-packages>       
<wls:package-name>net.minidev.json.*</wls:package-name>                              
</wls:prefer-application-packages>

让weblogic吞下上述细粒度的指令给我带来了很多麻烦。我发现自己强迫weblogic将进入web-inf文件夹的所有内容都记录下来,而不是做:

 <wls:container-descriptor>
        <wls:prefer-web-inf-classes>true</wls:prefer-web-inf-classes>  
    </wls:container-descriptor>

我宁愿不像web-inf-class那样使用锤子,但是当我不粗粒度的时候,我正在与weblogic系统类加载器共舞…

问候。



 类似资料:
  • 我使用JSON解析器来提取值,并使用以下jar json-path-2.1.0,当我在weblogic服务器上调用作为webservice部署的用例时,我得到了以下错误。我编写了一个小的主程序来从JSON字符串中提取值,它工作得很好,但是用例的服务器版本给出了问题。我不确定是否有任何其他罐子的一部分,我的耳朵可以负面影响这一点

  • 问题内容: 我需要一些帮助,以设计一种策略来解析Talend作业(Java作业,而不是Perl)中的JSON文档。我正在使用Talend版本:5.0.2,并在Mac上进行开发,并计划在Linux机器上运行。 不幸的是,由于文件格式的原因,我无法使用tFileInputJSON组件- 每个文件包含数百个JSON文档,而完整的JSON文档占据了文件中的一行。我认为正确的解决方案是逐行读取文件,然后将其

  • 问题内容: 我需要一个与J2ME / CLDC 1.1一起使用的基本JSON解析器。 Google搜索对此返回了大量答案(甚至在stackoverflow上也是如此),但似乎所有人都指向不再可用的库和解决方案(例如,很多指向应该在json.org上的实现)网站,但至少我找不到仅J2SE以外的任何内容)。 到目前为止,我最大的希望是将源链接到这里:https : //meapplicationdev

  • 我一直得到一个JSON解析器错误,每次我尝试连接从Android到php帐户。下面你会看到我得到的错误: 谁能帮帮我吗。。。 PHP代码: Android代码: Android代码: 公共JSONObject getJSONFromUrl(字符串url,列表参数){ 注册用户JSONObject PhP警告: php代码: 链接89是$no_of_rows 用户表结构: mysql_error:

  • 使用简单的JSONParser将字符串解析为JSONObject,没有任何问题。后来听说了jackson解析器,它似乎比简单的JSONParser更快。但问题是,如果jsonobject中有一个jsonobject,在通过Jackson解析器进行解析后,无法提取内部jsonobject,这在简单的JSONParser中不是这样的,而且要容易得多。 例如:{"Key1":"Value1","Key2

  • com.fasterxml.jackson.databind.jsonMappingException:属性“wallpaper”的setter定义冲突:在RializerCache._CreateAndCache2(deserializerCache.java:298)...com.fasterxml.jackson.databind.objectMapper._ReadMapandClose(