2017-04-03 3 views
0

@Default ich versuchen, eine ObjectMapper mit fasterXML jackson wie diese zu injizieren:WELD-001408: Unbefriedigend Abhängigkeiten für Typen ObjectMapper mit Qualifier bei

@Inject 
private ObjectMapper objectMapper; 

, aber ich habe die nächsten Fehler, wenn ich versuche, die Krieg-Datei bereitstellen :

org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unbefriedigend Abhängigkeiten für Typ ObjectMapper mit Qualifier @Default

Dies sind meine Abhängigkeiten:

<!-- the core, which includes Streaming API, shared low-level abstractions (but NOT data-binding) --> 
    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-core</artifactId> 
     <version>${jackson-2-version}</version> 
    </dependency> 
    <!-- Just the annotations; use this dependency if you want to attach annotations 
     to classes without connecting them to the code. --> 
    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-annotations</artifactId> 
     <version>${jackson-2-version}</version> 
    </dependency> 
    <!-- databinding; ObjectMapper, JsonNode and related classes are here --> 
    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-databind</artifactId> 
     <version>${jackson-2-version}</version> 
    </dependency> 
    <!-- jackson-dataformat-yaml: Support for reading and writing YAML-encoded data via Jackson abstractions --> 
    <dependency> 
     <groupId>com.fasterxml.jackson.dataformat</groupId> 
     <artifactId>jackson-dataformat-yaml</artifactId> 
     <version>${jackson-2-version}</version> 
    </dependency> 

Was ich falsch gemacht habe?

+0

Ist der 'Objektmapper' injizierbar? Ich denke nicht, dass es mit CDI-Kommentaren versehen ist, die sich qualifizieren. –

+0

In diesem Fall ist es notwendig, eine Provider-Methode zu erstellen? –

+0

Um ehrlich zu sein, ich kenne den Fall nicht, da ich die Bibliothek nicht so gut kenne, aber als ich mir die Quelle für 'ObjectMapper' ansah, hatte sie keine CDI-Anmerkungen. –

Antwort

0

Ich mache die Annahme, dass Sie die ObjectMapper benötigen, um einige Konfiguration darauf zu tun. Dazu können Sie verwenden:

@Provider 
public class ObjectMapperContextResolver implements ContextResolver<ObjectMapper> { 

    private final ObjectMapper mapper; 

    public ObjectMapperContextResolver() { 
     mapper = new ObjectMapper(); 
     // Do some configuration here 
    } 

    @Override 
    public ObjectMapper getContext(Class<?> type) { 
     return mapper; 
    } 

} 
Verwandte Themen