2016-11-06 6 views
0

Я использую play2.2.1 и теперь я столкнулся ошибка:com.fasterxml.jackson.databind.node.ObjectNode не могут быть преобразованы в org.codehaus.jackson.node.ObjectNode

com.fasterxml. jackson.databind.node.ObjectNode не могут быть преобразованы в org.codehaus.jackson.node.ObjectNode

код выглядит так:

package controllers; 

import play.*; 
import play.data.*; 
import play.mvc.*; 
import play.db.ebean.*; 

import views.html.*; 

import java.util.*; 
import models.*; 
import com.avaje.ebean.ExpressionList; 

import play.data.validation.Constraints.Required; 

import scala.*; 

import play.libs.Json; 
import org.codehaus.jackson.node.ObjectNode; 
public class Application extends Controller { 

//create JSON data 
public static Result ajax() { 
    String input = request().body().asFormUrlEncoded().get("input")[0]; 
    ObjectNode result = Json.newObject(); 
    if(input == null) { 
     result.put("status", "BAD"); 
     result.put("message", "Can't get sending data..."); 
     return badRequest(result); 
    } else { 
     result.put("status", "OK"); 
     result.put("message", input); 
     return ok(result); 
    } 
} 

И эта ошибка возникает при ObjectNode result = Json.newObject();. Однако, я подтвердил, что возвращаемое значение статического метода newObject() является org.codehaus.jackson.node.ObjectNode на [] [1] https://playframework.com/documentation/2.0/api/java/play/libs/Json.html

версии ссылки API является 2,0, а не 2,2, так что-то другое здесь существует? Глубоко, когда я импортирую com.fasterxml.jackson.databind.node.ObjectNode и удаляю import org.codehaus.jackson.node.ObjectNode;, приложение работает хорошо. Может ли кто-нибудь объяснить это поведение? Почему сообщение об ошибке противоречит ссылке API?

+1

У вас, кажется, конфликтующие библиотеки FasterXML/Jackson –

ответ

1

Я предполагаю, что есть две версии библиотеки Jackson, смешанной в одном проекте. В старых версиях используется пространство имен org.codehaus.jackson, в то время как более новые версии используют com.fasterxml.jackson, потому что они перешли из Codehaus. У меня была та же проблема, когда я использовал более новую версию Jackson, и рефакторинг работал неправильно. Классы несовместимы, поэтому вам необходимо последовательно использовать com.fasterxml.jackson.

+0

Спасибо за ваш ответ, моя проблема была решена, но у меня есть вопрос. Вы сказали, что столкнулись с той же ошибкой при реорганизации. Означает ли это, что вы пытались изменить более новую версию из более старой версии, а затем вы попали в эту ошибку? –

+0

У меня был проект с библиотекой '.jar', в которой использовалась старая версия Jackson от codehaus. Тогда я не знал разницы. Тем не менее, я использовал зависимость maven, чтобы включить 'org.fasterxml.jackson'. Оба класса «ObjectNode» были замешаны при рефакторинге, так как были конфликты. – thatguy

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