java.lang.NoSuchMethodError:org.apache.commons.lang.StringUtils.isBlank(Ljava / lang / String;)Z错误

时间:2017-01-05 12:49:21

标签: java json

我创建了WS02MB项目。在该项目中我使用了net.sf.json.JSONObject,累积方法出现上述错误。请告知如何解决此问题。

示例代码: -

JSONObject json = new JSONObject();
String pair= "{long sting here}";//11586 letter count
json.accumulate("message", pair); 

我使用了以下jar文件: -

andes-client-3.1.1.jar
commons-beanutils.jar
commons-collections-3.2.1.jar
commons-lang.jar
commons-lang3-3.5.jar
commons-logging-1.2.jar
ezmorph-1.0.6.jar
geronimo-jms_1.1_spec-1.1.0.wso2v1.jar
json-lib-2.4-jdk15.jar
log4j-1.2.13.jar
org-apache-commons-codec.jar
org-apache-commons-logging.jar
org.eclipse.paho.client.mqttv3-1.0.2.jar
org.wso2.carbon.logging-4.4.1.jar
org.wso2.securevault-1.0.0-wso2v2.jar

错误讯息: -

java.lang.NoSuchMethodError: org.apache.commons.lang.StringUtils.isBlank(Ljava/lang/String;)Z
at org.apache.commons.lang.math.NumberUtils.createNumber(NumberUtils.java:500)
at net.sf.json.util.JSONTokener.nextValue(JSONTokener.java:417)
at net.sf.json.JSONObject._fromJSONTokener(JSONObject.java:1008)
at net.sf.json.JSONObject._fromString(JSONObject.java:1201)
at net.sf.json.JSONObject.fromObject(JSONObject.java:165)
at net.sf.json.JSONSerializer.toJSON(JSONSerializer.java:139)
at net.sf.json.JSONSerializer.toJSON(JSONSerializer.java:103)
at net.sf.json.AbstractJSON._processValue(AbstractJSON.java:262)
at net.sf.json.JSONObject._processValue(JSONObject.java:2655)
at net.sf.json.JSONObject.processValue(JSONObject.java:2721)
at net.sf.json.JSONObject.setInternal(JSONObject.java:2736)
at net.sf.json.JSONObject._accumulate(JSONObject.java:2635)
at net.sf.json.JSONObject.accumulate(JSONObject.java:1543)

3 个答案:

答案 0 :(得分:5)

最后我发现了这个问题,这是由于commons-lang.jar和commons-lang3-3.5.jar冲突造成的。所以我从Gradle任务中删除了commons-lang.jar。现在它没有任何问题。

答案 1 :(得分:0)

我在使用Maven构建时遇到了相同的错误。当我应该导入commons.lang3时,我不小心导入了commons.lang实用程序。 我本以为会陷入编译/构建阶段,而不是运行时异常。

答案 2 :(得分:0)

这些其他解决方案都没有解决我的问题。我的问题是另一个 commons-lang 依赖项(较低版本)被另一个依赖项引入。如果您在 eclipse 中打开依赖层次结构并搜索 org.apache.commons.lang,您应该能够找到将其拉入的依赖。在 pom 中的该依赖下添加排除项,如下所示:

<dependency>
    <groupId>Problem dependency group</groupId>
    <artifactId>Problem dependency</artifactId>
    <version>1.0.0</version>
    <exclusions>
        <exclusion>
            <groupId>org.apache.commons</groupId>
            <artifactId>org.apache.commons.lang</artifactId>
        </exclusion>
    </exclusions>
</dependency>

这应该会阻止问题依赖引入其他版本的 commons-lang 并应该修复 noSuchMethodError。