2016-11-06 4 views
0

ich play2.2.1 bin mit und jetzt bin ich mit Blick auf den Fehler:com.fasterxml.jackson.databind.node.ObjectNode kann nicht in org.codehaus.jackson.node.ObjectNode umgewandelt werden

com.fasterxml. jackson.databind.node.ObjectNode kann nicht in org.codehaus.jackson.node.ObjectNode umgewandelt werden

der Code ist wie folgt:

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

Und der Fehler tritt bei ObjectNode result = Json.newObject();. Allerdings bestätigte ich, dass der Rückgabewert der statischen Methode newObject() ist org.codehaus.jackson.node.ObjectNode von [] [1] https://playframework.com/documentation/2.0/api/java/play/libs/Json.html

Die Version der API-Referenz 2.0, nicht 2.2, so etwas anderes existiert hier? Profoundly, wenn ich com.fasterxml.jackson.databind.node.ObjectNode importieren und import org.codehaus.jackson.node.ObjectNode; löschen, funktioniert die Anwendung gut. Kann jemand dieses Verhalten erklären? Warum widerspricht die Fehlermeldung der API-Referenz?

+1

Sie scheinen in Konflikt FasterXML/Jackson-Bibliotheken zu haben –

Antwort

1

Ich nehme an, dass es zwei Versionen der Jackson Bibliothek in einem Projekt durcheinander gibt. Alte Versionen verwenden den Namespace org.codehaus.jackson, während neuere Versionen com.fasterxml.jackson verwenden, weil sie aus dem Codehaus stammen. Ich hatte das gleiche Problem, als ich eine neuere Version von Jackson benutzte und das Refactoring nicht richtig funktionierte. Die Klassen sind nicht kompatibel, daher müssen Sie com.fasterxml.jackson konsistent verwenden.

+0

Vielen Dank für Ihre Antwort, mein Problem wurde gelöst, aber ich habe eine Frage. Sie haben gesagt, dass Sie beim Refaktorieren auf denselben Fehler gestoßen sind. Bedeutet das, dass Sie versucht haben, eine neuere Version von einer älteren Version zu ändern, und dann haben Sie den Fehler gefunden? –

+0

Ich hatte ein Projekt mit einer '.jar' Bibliothek, die eine alte Version von Jackson vom Codehaus verwendet. Ich kannte den Unterschied damals auch nicht. Allerdings habe ich eine Maven-Abhängigkeit verwendet, die 'org.fasterxml.jackson' enthält. Beide Klassen von "ObjectNode" wurden beim Refactoring durcheinander gebracht, da es zu Konflikten kam. – thatguy

Verwandte Themen