2012-01-26 1 views
1

Я пытаюсь использовать JSON-lib, но я не могу заставить его работать без NoClassDefFoundError. Вот код:Базовый пример JSON-lib

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()); 
    } 
} 

И команда компиляции:

javac -cp lib/json-lib-2.4-jdk15.jar hello.java 

И запустить команду:

java -cp .:lib/json-lib-2.4-jdk15.jar:lib/commons-lang-2.4.jar hello 

Я также пробовал с Викисклада lang3.3, который дает мне разные ошибки. Я думаю, что это может быть версия.

Как скомпилировать и запустить простой пример с помощью этой библиотеки?

Если есть лучшая библиотека без сумасшедших зависимостей, я бы хотел услышать об этом. Я пробовал JSON-Java Дугласа Крокфорда, но у меня были подобные проблемы.

Мне нужно что-то с либеральной лицензией, например Apache 2, MIT или аналогичным.

+0

Вы на linux.? – RanRag

+1

На самом деле вы не указали, какой класс вызывает ошибку. Это может быть очень важно. – Vadim

+0

@RanReg - Да, я на Linux, работаю без и IDE (если вы не считаете vim быть и IDE). – tjameson

ответ

3

Ответ вы ищете прямо там в файле POM https://repository.sonatype.org/service/local/repositories/central-proxy/content/net/sf/json-lib/json-lib/2.4/json-lib-2.4.pom

Вам необходимы следующие зависимости:

commons-beanutils-1.8.0 
commons-collections-3.2.1 
commons-lang.2.5 
commons-logging-1.1.1 
ezmorph-1.0.6 

факультативные

xom.1.1 (if serializing from/to XML) 
oro-2.0.8 (if using the jdk13 version of the library) 

сайт проекта (HTTP: //json-lib.sourceforge.net/) также перечислены эти требования.

Очень вероятно, что commons-lang-2.6 будет работать с json-lib 2.4, но я не могу гарантировать то же самое для commons-lang-3.x.

+0

Ничего себе, теперь я чувствую себя немым. Я не ожидал, что в библиотеке это просто потребует столько зависимостей ... – tjameson

+0

Я думаю, что «простой» - вопрос перспективы.Посмотрите на набор параметров конфигурации, которые предоставляет JsonConfig. Кроме того, когда библиотека была выпущена, она была единственной, которая допускала истинную двухстороннюю сериализацию многомерных массивов; xml <-> json <-> java сопоставления также. – aalmiray

+0

Я так считаю. Я искал способ получить/установить свойства JSON, поэтому я был так удивлен, что мне нужно было задействовать столько зависимостей. – tjameson

2

Взгляните на google Gson вместо:

  • Apache лицензия
  • Никакие другие зависимостями
  • Простое использование

Это пример:

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)); 
    } 
} 

И вуаля!

$ javac -cp lib/gson-2.0.jar hello.java 
$ java -cp .:lib/gson-2.0.jar hello 
hello='world' 
{"hello":"world"} 
$ 
+0

Я думаю, что это сработает. Я думаю, что проблема в том, что мне нужно найти правильную версию libs (как указывал @aalmiray). Я создаю эти примеры для клиента, поэтому я, вероятно, в конечном итоге использую это в примере. Благодаря! – tjameson

+0

Мне не нужна сериализация. Я просто хочу повторить, но спасибо за пример! – tjameson

 Смежные вопросы

  • Нет связанных вопросов^_^