2016-07-16 3 views
9

私はSpringブートプロジェクトのために、ビルドシステムをmavenからgradleに変更しています。私はこのスタックトレースを取得org.springframework.boot.web.supportが存在しません

19:03:08: Executing external task 'bootRun'... 
/home/dac/proj/spring-boot-master/spring-boot-samples/spring-boot-sample-jetty-jsp/src/main/java/sample/jetty/jsp/SampleJettyJspApplication.java:22: error: package org.springframework.boot.web.support does not exist 
import org.springframework.boot.web.support.SpringBootServletInitializer; 
             ^
/home/dac/proj/spring-boot-master/spring-boot-samples/spring-boot-sample-jetty-jsp/src/main/java/sample/jetty/jsp/SampleJettyJspApplication.java:25: error: cannot find symbol 
public class SampleJettyJspApplication extends SpringBootServletInitializer { 
              ^
    symbol: class SpringBootServletInitializer 
/home/dac/proj/spring-boot-master/spring-boot-samples/spring-boot-sample-jetty-jsp/src/main/java/sample/jetty/jsp/SampleJettyJspApplication.java:27: error: method does not override or implement a method from a supertype 
    @Override 
    ^
3 errors 
:compileJava FAILED 

FAILURE: Build failed with an exception. 

* What went wrong: 
Execution failed for task ':compileJava'. 
> Compilation failed; see the compiler error output for details. 

* Try: 
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. 

BUILD FAILED 

Total time: 2.334 secs 
Compilation failed; see the compiler error output for details. 
19:03:10: External task execution finished 'bootRun'. 

マイbuild.gradle

buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath "org.springframework.boot:spring-boot-gradle-plugin:1.3.6.RELEASE" 
     classpath 'org.springframework:springloaded:1.2.5.RELEASE' 
    } 
} 

apply plugin: 'java' 
apply plugin: 'eclipse' 
apply plugin: 'idea' 
apply plugin: 'spring-boot' 
apply plugin: 'rebel' 

buildscript { 
    repositories { 
     mavenCentral() 
    } 

    dependencies { 
     classpath group: 'org.zeroturnaround', name: 'gradle-jrebel-plugin', version: '1.1.3' 
    } 
} 
jar { 
    baseName = 'gs-spring-boot' 
    version = '0.1.0' 
} 

repositories { 
    mavenCentral() 
} 

sourceCompatibility = 1.8 
targetCompatibility = 1.8 

dependencies { 
    // tag::jetty[] 
    compile("org.springframework.boot:spring-boot-starter-web") { 
     exclude module: "spring-boot-starter-tomcat" 
    } 
    compile("org.springframework.boot:spring-boot-starter-jetty") 
    // end::jetty[] 
    // tag::actuator[] 
    compile("org.springframework.boot:spring-boot-starter-actuator") 

    testCompile("org.springframework.boot:spring-boot-starter-test") 
    testCompile("junit:junit") 

} 

// change default IntelliJ output directory for compiling classes 
idea { 
    module { 
     inheritOutputDirs = false 
     outputDir = file("$buildDir/classes/main/") 
    } 
} 

task wrapper(type: Wrapper) { 
    gradleVersion = '2.3' 
} 

マイpom.xml

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <parent> 
     <!-- Your own application should inherit from spring-boot-starter-parent --> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-samples</artifactId> 
     <version>1.4.0.BUILD-SNAPSHOT</version> 
    </parent> 
    <artifactId>spring-boot-sample-jetty-jsp</artifactId> 
    <packaging>war</packaging> 
    <name>Spring Boot Jetty JSP Sample</name> 
    <description>Spring Boot Jetty JSP Sample</description> 
    <url>http://projects.spring.io/spring-boot/</url> 
    <organization> 
     <name>Pivotal Software, Inc.</name> 
     <url>http://www.spring.io</url> 
    </organization> 
    <properties> 
     <main.basedir>${basedir}/../..</main.basedir> 
     <m2eclipse.wtp.contextRoot>/</m2eclipse.wtp.contextRoot> 
    </properties> 
    <dependencies> 
     <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-validation</artifactId> 
      <exclusions> 
       <exclusion> 
        <groupId>org.apache.tomcat.embed</groupId> 
        <artifactId>tomcat-embed-el</artifactId> 
       </exclusion> 
      </exclusions> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-jetty</artifactId> 
      <!--<scope>provided</scope>--> 
     </dependency> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>jstl</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.eclipse.jetty</groupId> 
      <artifactId>apache-jsp</artifactId> 
      <!--<scope>provided</scope>--> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-test</artifactId> 
      <scope>test</scope> 
     </dependency> 
    </dependencies> 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
       <configuration> 
        <executable>true</executable> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-surefire-plugin</artifactId> 
       <configuration> 
        <useSystemClassLoader>false</useSystemClassLoader> 
       </configuration> 
      </plugin> 



     </plugins> 
    </build> 
</project> 

どのように私はGradleのためにパッケージが利用できるようにする必要がありますか?

+0

なぜmavenとgradleの両方ですか?両方を使用するのではなく、どちらか一方を使用してください。 –

+0

これはJavaソースファイルの不具合なので、賢明なIDEが正確にどのように修正するかを教えてくれるかもしれません:click-click-done。 Visual Studioコードでこのエラーを解決しました。 – nobar

答えて

7

それはおそらくあなたのソースコードでのインポートの問題だ - あなたのGradleスクリプトを構築春ブーツ1.3.6.RELEASEを使用していますSpringBootServletInitializerには、次の完全修飾名持つには:

org.springframework.boot.context.web.SpringBootServletInitializer 

あなたのMavenのpom.xmlを、しかし、あなたはSampleJettyJspApplicationに行くと

に輸入を変更するのであれば

org.springframework.boot.web.support.SpringBootServletInitializer 

:、パッケージ名に変更された春ブーツ1.4.0.BUILD-SNAPSHOTを使用しています

import org.springframework.boot.context.web.SpringBootServletInitializer; 

すべてが問題ありません。

また、あなたはGradleのは1.4.0.BUILD-SNAPSHOTをインポートするスクリプトを作成変更することができますが、それは春のスナップショットリポジトリを追加する必要になります。

buildscript { 
    repositories { 
     maven.url "http://repo.spring.io/snapshot" 
     mavenCentral() 
    } 

    dependencies { 
     classpath("org.springframework.boot:spring-boot-gradle-plugin:1.4.0.BUILD-SNAPSHOT") 
    } 
} 
+1

ありがとうございます。ドキュメントでSpringはどこに言及していますか? – Adnan

+1

"org.springframework.boot.context.webパッケージのすべてのクラスは廃止され、再配置されました。" https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-1.4-Release-Notes#deprecations-in-spring-boot-14 –

3

あなたは同じ春のブートバージョン1.4.0を使用する必要があります.BUILD-SNAPSHOTを作成します。 org.springframework.boot.web.support.SpringBootServletInitializerが1.4.0から導入されたため、gradleはそれを見つけることができません。

+1

私は依存関係 'classpath" orgの追加に失敗しました。 springframework.boot:spring-boot-gradle-plugin:1.4.0.BUILD-SNAPSHOT "' gradleは再設定できません –

+0

1.4.0.BUILD-SNAPSHOTはSpringのスナップショットリポジトリにのみ存在し、Maven中心にはないので、コードサンプルの私の答えを見てください。 –

+1

@milošが示唆するように、spring reposをgradleに追加してください。 Spring Boot Gradleプラグインのドキュメントhttp://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/html/build-tool-plugins-gradle-plugin.html –

関連する問題