2017-06-09 4 views
0

Ich versuche, Java-Anwendung zu testen (have main-Methode). Ich verwende Maven, um Abhängigkeiten zu meinem Projekt hinzuzufügen. Ich führe die Anwendung von IntelliJ IDE direkt aus, anstatt ein Fettglas zu erstellen und dann zu laufen. Aber irgendwie unfähig i JSON-Klasse zur Laufzeit und immer Ausnahme findenJackson-Provider nicht verfügbar, wenn Anwendung

Exception in thread "main" 
java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/ObjectMapper 
at com.hospitality.component.visma.websocket.Test.<init>(Test.java:10) 
at com.hospitality.component.visma.websocket.Test.main(Test.java:16) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:497) 
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147) 
Caused by: java.lang.ClassNotFoundException: com.fasterxml.jackson.databind.ObjectMapper 

Hier ist meine pom.xml:

 <dependency> 
     <groupId>com.fasterxml.jackson.jaxrs</groupId> 
     <artifactId>jackson-jaxrs-json-provider</artifactId> 
    </dependency> 

Dieses Projekt haben eine übergeordnete pom.xml Datei, die bereits über dieses Gefäß enthalten. mvn dependecy: Baum zeigt folgende jar Liste:

[INFO] Building visma-websocket-server 0.0.1-SNAPSHOT 
[INFO] ----------------------------------------------------------- 
    ------------- 
[INFO] 
[INFO] --- maven-dependency-plugin:2.1:tree (default-cli) @ visma-websocket-server --- 
[INFO] com.hospitality.hp.components:visma-websocket-server:jar:0.0.1-SNAPSHOT 
[INFO] +- org.glassfish.metro:webservices-rt:jar:2.3:provided 
[INFO] | \- org.glassfish.metro:webservices-api:jar:2.3:provided 
[INFO] |  \- javax.annotation:javax.annotation-api:jar:1.2-b03:provided 
[INFO] +- junit:junit:jar:4.11:test 
[INFO] | \- org.hamcrest:hamcrest-core:jar:1.3:test 
[INFO] +- org.hamcrest:hamcrest-all:jar:1.3:test 
[INFO] +- javax:javaee-api:jar:7.0:provided 
[INFO] | \- com.sun.mail:javax.mail:jar:1.5.0:provided 
[INFO] |  \- javax.activation:activation:jar:1.1:provided 
[INFO] +- org.slf4j:slf4j-api:jar:1.7.21:compile 
[INFO] +- ch.qos.logback:logback-classic:jar:1.1.7:compile 
[INFO] | \- ch.qos.logback:logback-core:jar:1.1.7:compile 
[INFO] +- org.eclipse.jetty.websocket:websocket-server:jar:9.0.3.v20130506:compile 
[INFO] | +- org.eclipse.jetty.websocket:websocket-common:jar:9.0.3.v20130506:compile 
[INFO] | | +- org.eclipse.jetty.websocket:websocket-api:jar:9.0.3.v20130506:compile 
[INFO] | | \- org.eclipse.jetty:jetty-util:jar:9.0.3.v20130506:compile 
[INFO] | +- org.eclipse.jetty.websocket:websocket-servlet:jar:9.0.3.v20130506:compile 
[INFO] | \- org.eclipse.jetty:jetty-http:jar:9.0.3.v20130506:compile 
[INFO] +- com.hospitality.hp.components:jndi-tools:jar:0.0.1-SNAPSHOT:compile 
[INFO] +- org.eclipse.jetty:jetty-server:jar:9.0.3.v20130506:compile 
[INFO] | +- org.eclipse.jetty.orbit:javax.servlet:jar:3.0.0.v201112011016:compile 
[INFO] | \- org.eclipse.jetty:jetty-io:jar:9.0.3.v20130506:compile 
[INFO] +- com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider:jar:2.2.1:provided 
[INFO] | +- com.fasterxml.jackson.jaxrs:jackson-jaxrs-base:jar:2.2.1:provided 
[INFO] | +- com.fasterxml.jackson.core:jackson-core:jar:2.2.1:provided 
[INFO] | +- com.fasterxml.jackson.core:jackson-databind:jar:2.2.1:provided 
[INFO] | | \- com.fasterxml.jackson.core:jackson-annotations:jar:2.2.1:provided 
[INFO] | \- com.fasterxml.jackson.module:jackson-module-jaxb-annotations:jar:2.2.1:provided 
[INFO] \- org.projectlombok:lombok:jar:1.16.8:provided 

kann mir jemand sagen, wie ich dies als Standardbereich beheben, so kompilieren, warum dies nicht verfügbar ist, wenn ich in IDE meine Anwendung ausführen? Allerdings in einem JunitTest-Lauf ohne Probleme. Irgendeine Idee, wie man das repariert?

------------------------- dependencyManagement -------------------- -------------

<dependencyManagement> 
    <dependencies> 
     <dependency> 
      <groupId>com.fasterxml.jackson.core</groupId> 
      <artifactId>jackson-annotations</artifactId> 
      <scope>compile</scope> 
     </dependency> 
     <dependency> 
      <groupId>com.fasterxml.jackson.core</groupId> 
      <artifactId>jackson-databind</artifactId> 
      <scope>compile</scope> 
     </dependency> 
     <dependency> 
      <groupId>com.fasterxml.jackson.core</groupId> 
      <artifactId>jackson-core</artifactId> 
      <scope>compile</scope> 
     </dependency> 
    </dependencies> 
</dependencyManagement> 
+1

Haben Sie Ihr Projekt als Maven-Projekt in IDEA importiert? –

Antwort

0
| +- com.fasterxml.jackson.core:jackson-databind:jar:2.2.1:provided 

Scope ist provided so ist es normal, NoClassDefFoundError zu haben; sollte die Geltungsbereich-Anweisung auslassen und den Standardwert verwenden.

+0

Ja, dies wird so angezeigt, weil von da her der Umfang angegeben wurde. Kann ich diesen Bereich in Child-Pom kompilieren? –

+0

Sie können einen Abschnitt 'dependencyManagement' verwenden, um dies zu handhaben, denke ich (in der Pom des Verbrauchers). Fügen Sie einfach diesen Abschnitt hinzu, fügen Sie "jackson-databind" mit dem richtigen Bereich hinzu, und es sollte alles in Ordnung sein. – Andrei

+0

Scheint, nicht mit Abhängigkeitsverwaltung zu arbeiten. Ich habe diese Jsckson-Abhängigkeiten zu dependencyManagement hinzugefügt und vom Standard-Abhängigkeiten-Tag entfernt und kann es nun nicht mehr im Projekt auflösen. –

Verwandte Themen