2015-05-09 27 views
5

Tôi đang cố gắng tích hợp Dữ liệu mùa xuân trong dự án Vaadin của mình. Vì vậy, tôi đã cố gắng chạy mã mẫu sau đó sử dụng các công nghệ tương tự:Vaadin, Cầu cảng, Dữ liệu mùa xuân, Maven - Ngoại lệ

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

Điều duy nhất tôi đã thay đổi là tôi thêm cầu cảng như chúng ta cần phải sử dụng nó cho dự án của chúng tôi.

Thật không may, sau khi jetty:run Tôi nhận được ngoại lệ sau đây:

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

pom.xml của tôi trông như thế này:

<?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

Bất kỳ lần theo dõi nào? Tôi đang có một vấn đề tương tự với cùng một ngoại lệ, dường như không thể tìm thấy một giải pháp. – Dariusz

Trả lời

3

tôi đã không có cơ hội để khai thác lý do thực tế cho điều này, nhưng tôi nghi ngờ một vấn đề classpath giữa jetty & tomcat đó là được ưa thích bởi spring-boot.

  1. Nhưng dù sao, nếu bạn có kế hoạch tiếp tục sử dụng lò xo khởi động mà có lẽ đơn giản nhất, các spring-boot documentation cung cấp một ví dụ về việc thay thế tomcat với cầu cảng, và nó đơn giản như thêm phần sau đây để pom của bạn:
<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> 

Ngoài ra, thay vì chạy mvn jetty-run bạn có thể muốn chạy demo.DemoApplication để nó có thể khám phá đúng cấu hình mùa xuân và khởi tạo ngữ cảnh.

  1. Nếu bạn định tránh khởi động mùa xuân, hãy xóa định nghĩa gốc cũng như các phụ thuộc và bổ trợ khởi động khác. Ngoài ra, hãy nhớ tự thiết lập ứng dụng để khởi tạo ngữ cảnh mùa xuân khi khởi động.
0

Giá trị của nó sau hai năm: Thông báo lỗi cho bạn biết rằng org.eclipse.jetty.apache.jsp.JuliLog không phải là phân lớp/triển khai org.apache.juli.logging.Log.

Điều này xảy ra nếu có nhiều lọ chứa cùng một lớp (org.apache.juli.logging.Log trong trường hợp này tôi giả sử) và nhiều trình nạp lớp cung cấp cùng một lớp (được coi là khác nhau trong instance-ofisAssignableFrom-checks).

Kiểm tra các chai đã được tải xuống để biết sự xuất hiện của org.apache.juli.logging.Log.class và xem chúng đến từ đâu. Sau khi điều chỉnh nó trong pom của bạn, bạn sẽ có thể thoát khỏi lỗi.

Các vấn đề liên quan