Add under

 <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>

The following exclusion:

 <scope>test</scope>
    <exclusions>
        <exclusion>
            <groupId>com.vaadin.external.google</groupId>
            <artifactId>android-json</artifactId>
        </exclusion>
    </exclusions>

Similarly, for Gradle projects:

testCompile("org.springframework.boot:spring-boot-starter-test") {
    exclude group: "com.vaadin.external.google", module:"android-json"
}
Answer from Ori Marko on Stack Overflow
🌐
Maven Repository
mvnrepository.com › artifact › org.springframework.boot › spring-boot-starter-json
Maven Repository: org.springframework.boot » spring-boot-starter-json
1 month ago - Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can just run ... aar android apache api arm assets build build-system bundle client clojure cloud config cran data database eclipse example extension framework github gradle groovy io ios javascript jvm kotlin library logging maven ...
Top answer
1 of 6
198

Add under

 <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>

The following exclusion:

 <scope>test</scope>
    <exclusions>
        <exclusion>
            <groupId>com.vaadin.external.google</groupId>
            <artifactId>android-json</artifactId>
        </exclusion>
    </exclusions>

Similarly, for Gradle projects:

testCompile("org.springframework.boot:spring-boot-starter-test") {
    exclude group: "com.vaadin.external.google", module:"android-json"
}
2 of 6
47

Background: org.json works great, but has a license clause that some people don't like ("The Software shall be used for Good, not Evil."). So Vaadin wanted to use the library, but couldn't be sure they wouldn't use it for evil someday. Instead, they re-implemented the interface, published android-json and used it as a drop in replacement for org.json. Others began to use android-json as well so that they too would not be bound by the requirement of not using their software for evil.

This is a fine solution, except that when the two libraries are on the classpath, they collide.

Solution: If you get this error from conflicting transitive dependencies, then your best bet is to exclude either Vaadin's android-json library (brought in by Spring), or exclude the org.json library (brought in by another dependency). Vaadin's version is meant to be an identical implementation, but there are subtle differences.

If you're using org.json in your code and it is conflicting with Spring's Vaadin dependency, then I would recommend trying open-json. It's a port of Vaadin's re-implementation of org.json, but they changed the packages so you won't have any conflicts with org.json:json or com.vaadin.external.google:android-json

https://github.com/openjson/openjson

Add gradle dependency:

    implementation('com.github.openjson:openjson:1.0.12')

Or in Maven:

    <dependency>
        <groupId>com.github.openjson</groupId>
        <artifactId>openjson</artifactId>
        <version>1.0.12</version>
    </dependency>

Then update any imports that were being used by org.json classes.

Discussions

Creat a JSONObject : Spring boot - Stack Overflow
The reason for this error is explained clearly here. To reiterate the answer, JSONObject classes don't have getters and hence the error. By default spring-boot starter web dependency has Jackson web support which can convert any POJO class to JSON object. More on stackoverflow.com
🌐 stackoverflow.com
java - JSONObject ClassNotFoundException - Stack Overflow
This is the latest dependency & it don't seems to have "import org.json.JSONObject;". Could you please guide ASAP? More on stackoverflow.com
🌐 stackoverflow.com
The curious case of JSON-Java (org.json) and Maven's dependency "hell"
The dependency tree by default exclude duplicates. You can do "mvn dependency:tree -Dverbose=true -DoutputFile=./tree.txt" and look at all inclusions of the specific library. But dependency exclusion is not the best way for your case. It is better to define your desired version within the "" section. You can verify the result by using a verbose output of the dependency:tree goal. More on reddit.com
🌐 r/java
30
25
July 19, 2025
Remove extra occurrences of org.json.JSONObject on the class path
From the build: Found multiple occurrences of org.json.JSONObject on the class path: jar:file:/Users/trisberg/.m2/repository/com/vaadin/external/google/android-json/0.0.20131108.vaadin1/android-jso... More on github.com
🌐 github.com
6
July 14, 2017
🌐
Spring
docs.spring.io › spring-boot › docs › 2.3.0.M1 › api › index.html
JSONObject (Spring Boot 2.3.0.M1 API)
JavaScript is disabled on your browser · Frame Alert · This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. Link to Non-frame version
🌐
Jar-Download
jar-download.com › home › org.springframework.boot › spring-boot-configuration-processor › 2.0.1.release › source code › jsonobject.java
org.springframework.boot.configurationprocessor.json.JSONObject Maven / Gradle / Ivy
*/ package org.springframework.boot.configurationprocessor.json; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.Map; // Note: this class was written without inspecting the non-free org.json source code. /** * A modifiable set of name/value mappings. Names are unique, non-null strings. Values may * be any mix of {@link JSONObject JSONObjects}, {@link JSONArray JSONArrays}, Strings, * Booleans, Integers, Longs, Doubles or {@link #NULL}. Values may not be {@code null}, * {@link Double#isNaN() NaNs}, {@link Double#isInfinite() infinities}, or of any type not * listed here.
🌐
Maven Central
central.sonatype.com › artifact › org.springframework.boot › spring-boot-starter-json › 2.3.3.RELEASE
spring-boot-starter-json - Maven Central - Sonatype
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-json</artifactId> <version>2.3.3.RELEASE</version> </dependency> Copy to clipboard · <?xml version="1.0" encoding="UTF-8"?> <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <!-- This module was also published with a richer model, Gradle metadata, --> <!-- which should be used instead.
Find elsewhere
🌐
Sourcecodeexamples
sourcecodeexamples.net › 2019 › 12 › json-maven-dependency.html
json maven dependency
December 3, 2019 - <!-- https://mvnrepository.com/artifact/org.json/json --> <dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> <version>20190722</version> </dependency> For more details about the proper version to use, check out the following Maven Central link.
🌐
Reddit
reddit.com › r/java › the curious case of json-java (org.json) and maven's dependency "hell"
r/java on Reddit: The curious case of JSON-Java (org.json) and Maven's dependency "hell"
July 19, 2025 -

Hi. I have a recurring maven(?) issue that I hope is not unique to me and has been solved by someone somewhere.

As JSON parser, I use JSON-Java (the one with package org.json), instead of more famous ones, as the DX and API feel more fit for most/all my projects.

However, from time to time, I reach a very dreadful situation, where the "version" of the JSON-Java library that is available to my code is "not" the one that I have declared in my pom.xml file. In once case, the copyright notice in the source that I could see by clicking the class name in VSCode was from 2010, with the painful difference to the modern version that all parsing methods threw checked exceptions. In another instance, the JSONArray class did not implement Iterable/Iterator where in modern versions it does.

This is likely a maven transitive dependency issue, but the reason it is so visible for this particular library, is because either many libraries already have their own dependency on it, or that it's interface has evolved quite significantly along the way. Likely both.

The solution "in the book" for this is apparently to do "mvn dependency:tree" and exclude JSON-Java explicitly from other dependencies that depend on it. But it doesn't work for me! In my dependency three, only the recent version that is in my own pom file is shown, whereas in code/IDE (VSCode + IntelliJ), I can only use the old version. My deployment involves building a fat Jar, so it happens there too.

Am I doing something wrong? Is there a proven way to make only a certain version of a dependency available to my code, regardless of other versions that may be present deeper in the class path? Does the order of dependencies in pom file matter? and how can I strictly control the versions of dependencies that appear in my fat jar, in case it is possible at all?

Many thanks

🌐
Maven Repository
mvnrepository.com › artifact › org.springframework.boot › spring-boot-starter-json › 2.4.1
Maven Repository: org.springframework.boot » spring-boot-starter-json » 2.4.1
December 11, 2020 - Spring System Design in Practice: Build scalable web applications using microservices and design patterns in Spring and Spring Boot ... aar android apache api arm assets build build-system bundle client clojure cloud config cran data database eclipse example extension framework github gradle groovy io ios javascript jvm kotlin library logging maven mobile module npm osgi persistence plugin resources rlang sdk server service spring sql starter testing tools ui web webapp
🌐
DEV Community
dev.to › alexmercedcoder › how-to-build-a-java-spring-json-api-from-a-blank-maven-project-311m
How to build a Java Spring JSON API from a blank maven project - DEV Community
October 1, 2023 - mvn archetype:generate -DgroupId=com.example -DartifactId=todocrud -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false ... Open the pom.xml file and add the Spring Boot and PostgreSQL dependencies.
🌐
Maven Repository
mvnrepository.com › artifact › org.json › json
Maven Repository: org.json » json
December 24, 2025 - aar android apache api arm assets build build-system bundle client clojure cloud config cran data database eclipse example extension framework github gradle groovy io ios javascript jvm kotlin library logging maven mobile module npm osgi persistence plugin resources rlang sdk server service spring ...
🌐
Maven Central Repository
search.maven.org › org.json › json › 20180813
Maven Central Repository Search
<dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> <version>20180813</version> </dependency>
🌐
Jar-Download
jar-download.com › home › com.github.cliftonlabs › json-simple › 2.1.2 › source code › jsonobject.java
org.json.simple.JSONObject Maven / Gradle / Ivy
org.json.simple.JSONObject maven / gradle build tool code. The class is part of the package ➦ Group: com.github.cliftonlabs ➦ Artifact: json-simple ➦ Version: 2.1.2
🌐
Jar-Download
jar-download.com › home › org.json › json › 20180813 › source code › jsonobject.java
org.json.JSONObject Maven / Gradle / Ivy
A * JSONObject constructor can be used to convert an external form JSON text * into an internal form whose values can be retrieved with the * get and opt methods, or to convert values into a * JSON text using the put and toString methods. A * get method returns a value if one can be found, ...
🌐
GitHub
github.com › spring-attic › spring-cloud-deployer-kubernetes › issues › 142
Remove extra occurrences of org.json.JSONObject on the class path · Issue #142 · spring-attic/spring-cloud-deployer-kubernetes
July 14, 2017 - From the build: Found multiple occurrences of org.json.JSONObject on the class path: jar:file:/Users/trisberg/.m2/repository/com/vaadin/external/google/android-json/0.0.20131108.vaadin1/android-json-0.0.20131108.vaadin1.jar!/org/json/JSO...
Author   trisberg
🌐
Maven Repository
mvnrepository.com › artifact › org.json › json › 20210307
Maven Repository: org.json » json » 20210307
March 9, 2021 - aar android apache api arm assets build build-system bundle client clojure cloud config cran data database eclipse example extension framework github gradle groovy io ios javascript jvm kotlin library logging maven mobile module npm osgi persistence plugin resources rlang sdk server service spring ...
Published   Mar 09, 2021
Version   20210307
🌐
Maven Central Repository
search.maven.org › org.springframework.boot › spring-boot-starter-json › 2.2.3.release
spring-boot-starter-json
pkg:maven/org.springframework.boot/spring-boot-starter-json@2.2.3.RELEASE · Used in: 121 components · Overview · Overview · Versions · Versions · Dependents · Dependents · Dependencies · Dependencies · End-of-Life Security Fix Available · Starter for reading and writing json ·
🌐
Stack Overflow
stackoverflow.com › questions › 42969716 › how-to-import-org-json-in-maven-using-dependency
java - How to import org.json in maven using dependency - Stack Overflow
You are right.My repository was broken and spring .framework.jdbc and spring.framework.core dependency versions were missing. so i added them and now added json. now its working fine · FIFA oneterahertz – FIFA oneterahertz · 2017-03-23 08:41:32 +00:00 Commented Mar 23, 2017 at 8:41 · Add a comment | Related questions · 28 · package org.json does not exist when importing org.json.JSONObject · 1 · JSON Dependency not working in Maven pom.xml ·