Question
Je suis en train d'utiliser JSON-lib, mais je ne peux pas le faire fonctionner sans NoClassDefFoundError
.Voici le code:
import net.sf.json.*;
public class hello {
public static void main(String[] args) {
String settings = "{\"hello\": \"world\"}";
JSONObject obj = (JSONObject)JSONSerializer.toJSON(settings);
System.out.println(obj.toString());
}
}
Et la commande de compilation:
javac -cp lib/json-lib-2.4-jdk15.jar hello.java
Et la commande à exécuter:
java -cp .:lib/json-lib-2.4-jdk15.jar:lib/commons-lang-2.4.jar hello
J'ai aussi essayé avec les communes-lang3.3, ce qui me donne des erreurs différentes.Je pense qu'il pourrait être une version de la chose.
Comment puis-je compiler et exécuter un exemple simple avec cette bibliothèque?
Si il y a une meilleure bibliothèque sans fou dépendances, j'aimerais en entendre parler.J'ai essayé de Douglas Crockford JSON-Java, mais j'ai eu des problèmes similaires.
J'aurais besoin de quelque chose avec un libéral de la licence, comme Apache 2, le MIT ou similaire.
La solution
La réponse que vous cherchez est là dans le fichier POM https://repository.onatype.org/service/local/repositories/central-proxy/content/net/sf/json-lib/json-Lib / 2.4 / JSON-LIB-2.4.POM
Vous avez besoin des dépendances suivantes:
commons-beanutils-1.8.0
commons-collections-3.2.1
commons-lang.2.5
commons-logging-1.1.1
ezmorph-1.0.6
en option
xom.1.1 (if serializing from/to XML)
oro-2.0.8 (if using the jdk13 version of the library)
Le site Web du projet (http://json-lib.sourceforge.net/) répertorie également ces exigences.
Il est très probable que Commons-Lang-2.6 fonctionnera avec JSON-LIB 2.4, mais je ne peux pas garantir la même chose pour les Commons-Lang-3.x.
Autres conseils
Jetez un coup d'œil à Google Gson à la place:
- License Apache
- Aucune autre dépendance
- Utilisation simple
Ceci est exemple:
import com.google.gson.Gson; class Foo { private String hello; public String toString() { return "hello='" + hello + "'"; } } public class hello { public static void main(String[] args) { String text = "{\"hello\": \"world\"}"; Gson gson = new Gson(); Foo foo = gson.fromJson(text, Foo.class); System.out.println(foo.toString()); System.out.println(gson.toJson(foo)); } }
et voila!
$ javac -cp lib/gson-2.0.jar hello.java $ java -cp .:lib/gson-2.0.jar hello hello='world' {"hello":"world"} $