【问题标题】:java.lang.NoSuchMethodError: org.apache.commons.lang.StringUtils.isBlank(Ljava/lang/String;)Z Errorjava.lang.NoSuchMethodError: org.apache.commons.lang.StringUtils.isBlank(Ljava/lang/String;)Z 错误
【发布时间】:2021-08-02 21:52:43
【问题描述】:

我已经创建了 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)

【问题讨论】:

  • 每次你看到像noSuchMethod 这样的东西,这表明你在类路径中使用了不同的或两个库。所以现在重点:在编译时检查什么库需要什么 jar。 (如果你使用 maven\gradle 有显示图树的命令)。然后与RUNTIME 库进行比较。您可以通过异常堆栈跟踪查看哪个库需要另一个库。要找到所需的库,您需要YourClass.class.getClassloader.getResource('package.YourClass.class。因此,您将了解为什么会发生此异常。

标签: java json


【解决方案1】:

最后我发现了问题,这是由于 commons-lang.jar 和 commons-lang3-3.5.jar 冲突。所以我从 Gradle 任务中删除了 commons-lang.jar。现在它可以正常工作了。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      这些其他解决方案都没有解决我的问题。我的问题是另一个 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。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-04-13
        • 2018-01-16
        • 2016-02-07
        • 1970-01-01
        • 2014-12-26
        • 1970-01-01
        • 2020-03-28
        相关资源
        最近更新 更多