2017-02-14 6 views
1

Ich habe auf eine spätere Version von jackson (dh von org.codehaus ... zu com.fasterxml ...) upgegraded und plötzlich stehe ich vor vielen seltsamen Dingen Fehler. Nach stundenlangem Versuchen und Anpassen kann ich es immer noch nicht zur Arbeit bringen, also frage ich euch, ob ihr mir helfen könnt.jackson-databind "object ist keine Instanz zum deklarieren einer Klasse"

Ich habe die folgende Methode:

@GET 
@Produces(MediaType.APPLICATION_JSON) 
@Path("getTerminalsByIdAndLocation") 
List<SearchResultDto> getTerminalsByIdAndLocation(@QueryParam("location") String location, @QueryParam("id") Integer id) throws BusinessException; 

und Funktionen Implementierung tut nur eine Suche in einem Repository.

Die SearchResultDto sieht wie folgt aus:

@JsonIgnoreProperties(ignoreUnknown = true) 
public class SearchResultDto implements Serializable { 
    private static final long serialVersionUID = 1L; 

    private TerminalId terminalId; 
    private Integer location; 
    private String streetNumber; 
    private String postalcoldeCity; 
    private Status status; 

    // getters and setters with no annotation or so 
} 

Wenn ich jetzt meine Methode aufrufen ich die folgende Störung erhalte:

Caused by: com.fasterxml.jackson.databind.JsonMappingException: object is not an instance of declaring class (through reference chain: java.util.ArrayList[0]-><long package>.SearchResultDto["terminalId"])

Nach viel versucht, ich dachte, ich werde einfach entferne die terminalId und dann ändert sie sich zu:

Caused by: com.fasterxml.jackson.databind.JsonMappingException: object is not an instance of declaring class (through reference chain: java.util.ArrayList[0]-><long package>AtmSearchResultDto["location"])

Ich bin ahnungslos, was ist hier falsch?

EDIT

Ich habe auch versucht @JsonIgnore auf alles außer String streetNumber verwenden, aber dann die gleiche Ausnahme geschieht nur für streetNumber

+0

Ich habe Probleme mit Klassenladern oder so. Ich habe einige Debug-Ausgabe hinzugefügt (oder versucht, zu) und bekam einen Fehler wie: ' .SearchResultDto kann nicht in .SearchResultDto' umgewandelt werden –

Antwort

1

Lange Rede kurzer Sinn: messed ich meine Klassenpfad und gab es zwei Klassenlader , die Implementierung der REST-Methode rief ein Repository vom Datenbankmodul auf, von dem sie die Instanz von einem anderen Klassenlader bezogen hat. Nachdem ich meine Maven Scopes und Import-Typen angepasst habe, funktioniert es nun!

Verwandte Themen