Android Studio 引入JSONObject 以及其依赖包的那些坑 JAVA

2023-11-02

我用Android Studio开发app,自己写接口,需要使用json,于是涉及到Json的使用,然而在使用过程中也踩到了不少坑。

1、JSONObject 包的引用。

一种是:

import org.json.JSONObject;

但是引用之后,发现网上有的代码为

JSONObject.fromObject(result);

而这个包里是没有fromObject以及一些其他方法的。

后来上网去查找,发现他们用的是另外一个包。下面讲的主要是这个包

我们使用的是

import net.sf.json.JSONObject;

这个需要依赖以下的几个包:

commons-beanutils-1.8.0.jar、commons-collections、commons-lang-2.4、commons-logging-1.1、ezmorph-1.0.4、json-lib-2.3-jdk15

都需要添加到Android Studio的 Lib中,一个都不能少。

接下来我去网上下载了几个版本的jar包,那些

2、问题一:一口气将这几个包同时复制到lib目录中,然后“add as library”,编译后发现某些包有问题,编译不同。(问题没有截图)

后来定位到项目中的目录,发现有个别jar包居然为0kb!坑爹,删除后重新复制一遍进去。解决问题。

3、我原本在网上下载的某个包为:commons-beanutils-1.8.0.jar

再添加进去的时候,编译报错。

Duplicate class org.apache.commons.collections.ArrayStack found in modules commons-beanutils-1.8.0.jar (commons-beanutils-1.8.0.jar) and commons-collections.jar (commons-collections.jar)

大意是org.apache.commons.collections.ArrayStack这个方法在 (commons-collections.jar)和(commons-beanutils-1.8.0.jar)中重复了。

于是试着把commons-beanutils-1.8.0.jar给删除了,程序就能运行不报错了。如执行以下代码都没有问题

JSONObject json = new JSONObject();
json.put("userName", userName);
json.put("password", password);

但是在执行到这个操作的时候,又报错了。

JSONObject jsonObject = JSONObject.fromObject(result);
boolean isError = jsonObject.getBoolean("successs");

错误为:

java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/commons/beanutils/DynaBean;

到此,看到“beanutils”,我是明白了,因为我刚刚删除了commons-beanutils-1.8.0.jar的原因。

看来那几个依赖包,一个都不能少!

那之所以之前没删除之前,仍旧出现编译错误的原因,就只可能是依赖包的版本不一致了!

下载的时候说“(完整直接可用版)”和“所需全部JAR包”都是骗人的!!我那个伤心啊!折腾了那么久。

于是我意外发现了 commons-beanutils的官网,抱着试试的态度,下载了最新版的commons-beanutils-1.9.3.jar。引入项目后,完美解决!!!

我那个泪流满面啊!

 

以下为自己整理的JSONObject以及其依赖包的下载地址:

java json依赖包下载 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android Studio 引入JSONObject 以及其依赖包的那些坑 JAVA 的相关文章

随机推荐

  • java中代码和注释缩进_java编码规范_缩进和注释

    1 缩进排版 Indentation 4个空格常被作为缩进排版的一个单位 缩进的确切解释并未详细指定 空格vs 制表符 一个制表符等于n个空格 视具体的编辑器而定 Eclipse默认一个制表符为4个字符 3 1行长度 Line Length
  • ldconfig用法

    1 ldconfig简介 参考 http man linuxde net ldconfiglinux中ldconfig的使用介绍 chenzixun0的博客 CSDN博客 主要是在默认搜寻目录 lib和 usr lib以及动态库配置文件 e
  • (Redis):string介绍及应用

    目录 数据存储类型介绍 string redis 数据存储格式 string 类型 string 类型数据的基本操作 单数据操作与多数据操作的选择 string 类型数据的扩展操作 string 作为数值操作 string 类型数据操作的注
  • 蓝桥杯-2017-魔方状态-python3

    标题 魔方状态 二阶魔方就是只有2层的魔方 只由8个小块组成 如图p1 png所示 小明很淘气 他只喜欢3种颜色 所有把家里的二阶魔方重新涂了颜色 如下 前面 橙色 右面 绿色 上面 黄色 左面 绿色 下面 橙色 后面 黄色 请你计算一下
  • 实现 App 自动检测更新(Vue3 + Ionic + Cordova + Capacitor)

    目录 一 实现 App 自动检测更新的原理 1 效果 2 原理 二 实现 App 自动检测更新的实践 1 需要安装的插件 1 1 capacitor 1 2 cordova 2 封装 app update main ts 应用检查更新 入口
  • 一个合格的测试工程师必须掌握的技能

    通常情况下一位软件测试工程师需要具备哪些必须的技能 最佳隐形技能 开发语言知识背景 对被测试对象使用的语言有一定的了解 这样有助于测试工作的开展 同时 与开发人员之间的沟通协作也将更顺畅 计算机语言都具有一定的共通性 只要你深刻了解了一门语
  • C++ vector::assign的使用

    一 assign函数介绍 函数原型 void assign const iterator first const iterator last void assign size type n const T x T 功能 将区间 first
  • 安装oracle提示:SQL Developer requires a minimum of Java 8 解决方案

    电脑上安装了Java 12 在安装oracle时候提示 SQL Developer requires a minimum of Java 8 无法进行下一步 解决方案是 卸载已安装Java版本 重新卸载Java 8 oracle只能在Jav
  • SAP-MM:收货转储时提示 M7053“只能在公司代码 **** 的期间 2014/04 和 2014/03 中记账”

    错误信息 消息号M7053 解决方法 Step 1 使用MMPV进入 关闭账期 界面 Step 2 输入 公司代码 期间 会计年度 后 执行 F8 Step 3 使用MMRV进入 查看打开的账期 界面 当前期间仍为 2014 04 Step
  • TCP三次握手连接和四次握手断开

    1 为啥TCP连接需要3次握手 为啥TCP断开需要4次握手 解释1 解释2 解释3 解释4 解释5 解释6 解释7 解释8 解释9 总结 1 全双工 每个方向单独关闭 Client端必须等待Server端关闭后才可以关闭 中间时间不确定 所
  • 【操作系统】王道考研 p27 管程

    管程 知识总览 为什么要引入管程 为了简化PV 管程的定义和基本特征 管程的特点 用管程解决生产者消费者问题 Java总类似管程的机制 总结
  • 百万秒级Id随机生成器不重复

    package com careye common base import com careye common tool IDManager import java util HashMap import java util Map imp
  • OSI与TCP/IP模型区别

    OSI与TCP IP模型区别 1 OSI分七层 而TCP IP分四层 它们都有网络层 或称互联网层 传输层和应用层 但其他的层并不相同 2 OSI模型的网络层同时支持无连接和面向连接的通信 但是传输层上只支持面向连接的通信 TCP IP模型
  • 关于PHP流不得不说的那些事

    关于PHP流不得不说的那些事 相信不少PHP开发者或多或少都见过类似于 php input 或者 php output 这样的内容 很多人都知道这两个的作用一个是接收的 POST 请求中的原始 body 内容 另一个其实和 echo 之类的
  • (短信服务)java SpringBoot 阿里云短信功能实现发送手机验证码

    一 阿里云准备工作 1 阿里云短信服务 注册账号 阿里云官网 https www aliyun com 点击官网首页注册按钮 2 阿里云短信服务 设置短信签名 阿里云提供测试的签名 暂时可以跳过 注册成功后 点击登录按钮进行登录 登录后进入
  • 华为OD机试 - 全量和已占用字符集(Java)

    题目描述 给定两个字符集合 一个是全量字符集 一个是已占用字符集 已占用字符集中的字符不能再使用 要求输出剩余可用字符集 输入描述 输入一个字符串 一定包含 前为全量字符集 后的为已占用字符集 已占用字符集中的字符一定是全量字符集中的字符
  • 【WIN7】基本【网络参数配置】

    可视化界面 步骤 控制面板 网络和Internet 网络和共享中心 连接 本地连接 属性 Internet协议版本4 TCP IPv4 属性 需要手动更改的有 IP地址 子网掩码 默认网关 DNS服务器 示例 IP地址 192 168 1
  • Java:贪心排序,求学校的位置

    解题思路 用双重for循环计算每个点到其它点的路径之和 取路径之和最小且位置最小的点为学校 import java util 求无向完全图的单源最短路径 public class Main public static void main S
  • 高精度加法(C语言实现)

    高精度 是学C语言漫长的路上必须要学的一类程序 gt gt gt 高精度模板 加 减 乘低精高精 除低精高精 有余数 高精阶乘 200000以内 C语言实现 注释多多 lt lt lt gt gt gt 高精度加法 C语言实现 lt lt
  • Android Studio 引入JSONObject 以及其依赖包的那些坑 JAVA

    我用Android Studio开发app 自己写接口 需要使用json 于是涉及到Json的使用 然而在使用过程中也踩到了不少坑 1 JSONObject 包的引用 一种是 import org json JSONObject 但是引用之