2015-07-11 2 views
13

Этот вопрос является продолжением this one. Я не могу показаться, чтобы иметь возможность получить доступ к библиотеке Джексона в следующем коде:Джексон не может получить доступ к com.fasterxml.jackson.core.ObjectCodec

import com.fasterxml.jackson.databind.DeserializationFeature; 
import com.fasterxml.jackson.databind.ObjectMapper; 
import com.fasterxml.jackson.databind.ObjectReader; 
import com.fasterxml.jackson.databind.ObjectWriter; 
import java.io.IOException; 
import java.util.ArrayList; 
import java.util.List; 

public class ServerConfiguration { 
    public String info = null; 
    public String idlURL = null; 
    public String idlContents = null; 
    public List<ServerInfo> servers = new ArrayList<>(); 

    public final void clear() { 
     info = null; 
     idlURL = null; 
     idlContents = null; 
     if (servers != null) 
      servers.clear(); 
    } 

    private final static ObjectReader jsonReader; 
    private final static ObjectWriter jsonWriter; 

    static { 
     ObjectMapper mapper = new ObjectMapper(); 
     mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true); // <== Error:(52, 15) java: cannot access com.fasterxml.jackson.core.JsonGenerator class file for com.fasterxml.jackson.core.JsonGenerator not found 
     //mapper.configure(SerializationFeature.WRITE_SINGLE_ELEM_ARRAYS_UNWRAPPED, true); 
     jsonWriter = mapper.writer(); 
     jsonReader = mapper.reader(ServerConfiguration.class); 
    } 

    public static ServerConfiguration fromJson(String json) throws IOException { 
     return jsonReader.<ServerConfiguration>readValue(json); // <== Error:(59, 26) java: cannot access com.fasterxml.jackson.core.JsonProcessingException class file for com.fasterxml.jackson.core.JsonProcessingException not found 
    } 

    public String toJson() throws IOException { 
     return jsonWriter.writeValueAsString(this); 
    } 

} 

Eventhough файлы .jar находятся в пути к классам (автозаполнение показывает объявление метода в Intellij).

Что мне не хватает?

+0

В моем случае причина заключалась в том, что у меня было две разные версии библиотек Джексона в пути к классам. – Leukipp

ответ

14

Когда у меня была эта проблема, которую я имел ДЖЕКСОНА-аннотаций и ДЖЕКСОНА-DataBind банки в моем пути к классам, но не ДЖЕКСОНА-жильный.

Добавление jackson-core в classpath разрешило его для меня.

+2

Если вы используете Maven, убедитесь, что вы используете правильное значение ''. Это говорит maven, когда и в некоторых случаях, как он должен разрешать зависимости. Доступные значения: 'compile',' provided', 'runtime',' test', 'system' и' import', вы можете узнать больше о том, что они здесь делают: http://stackoverflow.com/a/29230903/2804473 –

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