2017-08-09 110 views
1

我想寫一個簡單的彈簧啓動應用程序,我可以使用Java 9運行。我無法在jdk9下編譯此應用程序。 我在記錄模塊周圍出現一堆錯誤SpringBoot爲java9使用拼圖模塊

有沒有人有任何使用jdk9拼圖概念下的Springboot的示例應用程序?

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.6.1:compile (default-compile) on project JigsawTest: Compilation failure: Compilation failure: 
[ERROR] the unnamed module reads package org.apache.commons.logging from both spring.jcl and jcl.over.slf4j 
[ERROR] module spring.aop reads package org.apache.commons.logging from both spring.jcl and jcl.over.slf4j 
[ERROR] module spring.context reads package org.apache.commons.logging from both spring.jcl and jcl.over.slf4j 
[ERROR] module spring.beans reads package org.apache.commons.logging from both spring.jcl and jcl.over.slf4j 
[ERROR] module spring.core reads package org.apache.commons.logging from both spring.jcl and jcl.over.slf4j 
[ERROR] module spring.web reads package org.apache.commons.logging from both spring.jcl and jcl.over.slf4j 
[ERROR] module spring.jcl reads package org.apache.commons.logging from both spring.jcl and jcl.over.slf4j 
[ERROR] module spring.boot.starter.web reads package org.apache.commons.logging from both spring.jcl and jcl.over.slf4j 
[ERROR] module spring.boot.starter reads package org.apache.commons.logging from both spring.jcl and jcl.over.slf4j 
[ERROR] module spring.boot.starter.logging reads package org.apache.commons.logging from both spring.jcl and jcl.over.slf4j 
[ERROR] module logback.classic reads package org.apache.commons.logging from both spring.jcl and jcl.over.slf4j 
[ERROR] module logback.core reads package org.apache.commons.logging from both spring.jcl and jcl.over.slf4j 
[ERROR] module slf4j.api reads package org.apache.commons.logging from both spring.jcl and jcl.over.slf4j 
[ERROR] module jcl.over.slf4j reads package org.apache.commons.logging from both spring.jcl and jcl.over.slf4j 
[ERROR] module jul.to.slf4j reads package org.apache.commons.logging from both spring.jcl and jcl.over.slf4j 
[ERROR] module log4j.over.slf4j reads package org.apache.commons.logging from both spring.jcl and jcl.over.slf4j 
[ERROR] module spring.boot.starter.tomcat reads package org.apache.commons.logging from both spring.jcl and jcl.over.slf4j 
[ERROR] module tomcat.embed.core reads package org.apache.commons.logging from both spring.jcl and jcl.over.slf4j 
[ERROR] module tomcat.embed.el reads package org.apache.commons.logging from both spring.jcl and jcl.over.slf4j 
[ERROR] module tomcat.embed.websocket reads package org.apache.commons.logging from both spring.jcl and jcl.over.slf4j 
[ERROR] module hibernate.validator reads package org.apache.commons.logging from both spring.jcl and jcl.over.slf4j 
[ERROR] module validation.api reads package org.apache.commons.logging from both spring.jcl and jcl.over.slf4j 
[ERROR] module jboss.logging reads package org.apache.commons.logging from both spring.jcl and jcl.over.slf4j 
[ERROR] module classmate reads package org.apache.commons.logging from both spring.jcl and jcl.over.slf4j 
[ERROR] module jackson.databind reads package org.apache.commons.logging from both spring.jcl and jcl.over.slf4j 
[ERROR] module jackson.annotations reads package org.apache.commons.logging from both spring.jcl and jcl.over.slf4j 
[ERROR] module jackson.core reads package org.apache.commons.logging from both spring.jcl and jcl.over.slf4j 
[ERROR] module spring.webmvc reads package org.apache.commons.logging from both spring.jcl and jcl.over.slf4j 
[ERROR] module spring.expression reads package org.apache.commons.logging from both spring.jcl and jcl.over.slf4j 
[ERROR] module spring.boot reads package org.apache.commons.logging from both spring.jcl and jcl.over.slf4j 
[ERROR] module spring.boot.autoconfigure reads package org.apache.commons.logging from both spring.jcl and jcl.over.slf4j 

Here is the link to my sample project in github

+1

請閱讀有關如何提出一個好問題的常見問題 - https://stackoverflow.com/help/how-to-ask。一些明顯的問題:您使用的是什麼版本的Maven?你可以分享pom.xml嗎?你在使用什麼版本的Spring Boot? –

回答

2

它看起來像:

  1. 所有JAR最終模塊路徑(怪異)
  2. spring.jcljcl.over.slf4j上包含很多相同的包裹

如果您無法修復1.,請嘗試解決2.通過排除兩個工件之一。

+0

是的。謝謝。我做到了。它的工作。 – Jay

2

我能夠到這個例子來編譯here。此時mvn clean package使用Maven 3.5.0。請注意,我還沒有嘗試運行該應用程序。

注意,我做了以下修改:

按照慣例,源代碼現在所在的模塊名稱匹配的文件夾中。

~/com.allstate.jigsaw/src/main/java/... 

module-info.java文件已被簡化了:

module com.allstate.jigsaw { 
    requires java.logging; 

    requires spring.boot; 
} 

另外的,pom.xml已經更新,使用Java 9.是在根父pom.xml,另一個在模塊文件夾中。這裏是主要的依賴項,在com.allstate.jigsaw/pom.xml

<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-web</artifactId> 
    <version>1.5.6.RELEASE</version> 
</dependency> 
+0

謝謝。感謝幫助。但是,運行這需要一些額外的工作。我必須在spring-boot-starter artifact中排除org.slf4j才能實現它。 – Jay