Search code examples
javaspringcompilationgradleannotations

Why Gradle compilation fails in this example?


I am reading a book Introducing Spring Framework and I got stuck on the first example. I have never used Gradle before. Somehow the compiler doesn't understand annotations used in my code. Even though I have used spring dependency in gradle.build file.

For the sake of completeness I will post all 4 files from this example.

build.gradle:

apply plugin: 'java'
apply plugin: 'application'

mainClassName = System.getProperty("mainClass")

repositories {
    mavenCentral()
}

dependencies {
    compile 'org.springframework:spring-context:4.0.5.RELEASE'
}

MessageService.java:

package com.apress.isf.spring;

public interface MessageService {

 public String getMessage();

}

HelloWorldMessage.java:

package com.apress.isf.spring;



public class HelloWorldMessage implements MessageService {

 public String getMessage(){

 return "Hello World";

 }

}

Application.java:

package com.apress.isf.spring;

import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

@Configuration
@ComponentScan
public class Application {

 @Bean
 MessageService helloWorldMessageService() {

    return new HelloWorldMessage();

 }

 public static void main(String[] args) {

    ApplicationContext context = new AnnotationConfigApplicationContext(Application.class);
    MessageService service =  context.getBean(MessageService.class);

    System.out.println(service.getMessage());

    }

}

I run the example with:

gradle run -DmainClass=com.apress.isf.spring.Application

Using Ubuntu.

The result is:

~/src/main/java/com/apress/isf/spring/Application.java:7: error: cannot find symbol
@Configuration
 ^
  symbol: class Configuration
~/src/main/java/com/apress/isf/spring/Application.java:8: error: cannot find symbol
@ComponentScan
 ^
  symbol: class ComponentScan
2 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: 5.025 secs

Can anyone help me with running this example? Regards.


Solution

  • I think you are missing the import statements for Configuration and ComponentScan at the top of your Application class:

    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.context.annotation.Configuration;