2015-05-09 12 views
5

Ich versuche, Spring Data in unser Vaadin-Projekt zu integrieren. Also habe ich versucht, den folgenden Beispielcode ausgeführt wird, die die gleichen Technologien verwendet:Vaadin, Jetty, Frühlingsdaten, Maven - Ausnahme

https://github.com/henrikerola/vaadin-spring-boot-todo

Das einzige, was ich verändert ist, dass ich Anlegesteg hinzugefügt, wie wir es für unser Projekt verwenden müssen.

Leider nach jetty:run Ich erhalte die folgende Ausnahme:

Exception in thread "main" java.util.ServiceConfigurationError: org.apache.juli.logging.Log: Provider org.eclipse.jetty.apache.jsp.JuliLog not a subtype

Meine pom.xml wie folgt aussieht:

<?xml version="1.0" encoding="UTF-8"?>... 
<modelVersion>4.0.0</modelVersion> 

<groupId>org.test</groupId> 
<artifactId>demo</artifactId> 
<version>0.0.1-SNAPSHOT</version> 
<packaging>jar</packaging> 

<name>demo</name> 
<description>Demo project for Spring Boot</description> 

<parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>1.2.3.RELEASE</version> 
    <relativePath/> <!-- lookup parent from repository --> 
</parent> 

<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <start-class>demo.DemoApplication</start-class> 
    <java.version>1.8</java.version> 
</properties> 

<dependencies> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-data-jpa</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>com.vaadin</groupId> 
     <artifactId>vaadin-spring-boot-starter</artifactId> 
     <version>1.0.0.beta2</version> 
    </dependency> 

    <dependency> 
     <groupId>com.h2database</groupId> 
     <artifactId>h2</artifactId> 
     <scope>runtime</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-test</artifactId> 
     <scope>test</scope> 
    </dependency> 
</dependencies> 

<dependencyManagement> 
    <dependencies> 
     <dependency> 
      <groupId>com.vaadin</groupId> 
      <artifactId>vaadin-bom</artifactId> 
      <version>7.4.2</version> 
      <type>pom</type> 
      <scope>import</scope> 
     </dependency> 
    </dependencies> 
</dependencyManagement> 

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-maven-plugin</artifactId> 
     </plugin> 
     <plugin> 
      <groupId>org.eclipse.jetty</groupId> 
      <artifactId>jetty-maven-plugin</artifactId> 
      <version>9.2.10.v20150310</version> 
     </plugin> 
    </plugins> 
</build> 

+0

Irgendwelche Follow-up? Ich habe ein ähnliches Problem mit der gleichen Ausnahme, scheint keine Lösung zu finden. – Dariusz

Antwort

3

ich die nicht gehabt haben Chance, den eigentlichen Grund dafür auszugraben, aber ich vermute ein Klassenpfad Problem zwischen Anlegesteg & Tomcat, die ist bevorzugt durch Spring-Boot.

  1. Wie auch immer, wenn Sie auf weitere Feder-Boot mit der wahrscheinlich am einfachsten ist, bietet das spring-boot documentation ein Beispiel tomcat mit Steg ersetzen, und es ist einfach, wie die folgenden zu Ihrem pom hinzu:
<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-web</artifactId> 
    <exclusions> 
     <exclusion> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-tomcat</artifactId> 
     </exclusion> 
    </exclusions> 
</dependency> 
<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-jetty</artifactId> 
</dependency> 

Anstatt mvn jetty-run auszuführen, möchten Sie wahrscheinlich auch die demo.DemoApplication ausführen, damit die Federkonfiguration richtig erkannt und der Kontext initialisiert werden kann.

  1. Wenn Sie Spring-Boot vermeiden möchten, entfernen Sie die übergeordnete Definition sowie die anderen Boot-Abhängigkeiten und Plugins. Denken Sie auch daran, die Anwendung manuell einzurichten, um den Federkontext auf Starup zu initialisieren.
0

Für was es wert ist nach zwei Jahren: Die Fehlermeldung Ihnen sagt, dass org.eclipse.jetty.apache.jsp.JuliLog ist keine Unterklasse/Implementierung von org.apache.juli.logging.Log.

Dies geschieht, wenn es mehr Gläser die gleiche Klasse, die (org.apache.juli.logging.Log in diesem Fall nehme ich an) und mehrere Klassenlader die gleiche Klasse bereitstellt (die in instance-of und isAssignableFrom-checks als unterschiedlich betrachtet werden).

Überprüfen Sie die Gläser, die für das Auftreten von org.apache.juli.logging.Log.class heruntergeladen wurden und sehen, woher sie kommen. Nachdem Sie das in Ihrem Pom angepasst haben, sollten Sie in der Lage sein, den Fehler loszuwerden.

Verwandte Themen