2016-11-06 111 views
0

。 jackson.databind.node.ObjectNode不能轉換到org.codehaus.jackson.node.ObjectNodecom.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遷移。我有同樣的問題,當我使用更新版本的傑克遜和重構無法正常工作。這些類不兼容,所以您必須始終使用com.fasterxml.jackson

+0

謝謝您的回答,我的問題已解決,但我有一個問題。你說你在重構時遇到了同樣的錯誤。這是否意味着您嘗試從較舊的版本更改較新的版本,然後發生錯誤? –

+0

我有一個帶'.jar'庫的項目,它使用了codehaus的老版本的Jackson。當時我也不知道差異。但是,我使用maven依賴項來包含'org.fasterxml.jackson'。由於存在衝突,兩種類型的ObjectNode在重構時混淆起來。 – thatguy

相關問題