Anup Chandratre
Anup Chandratre

Reputation: 51

Java 9 with Spring boot 2 cannot detect groovy classes

I am trying to run a SpringBoot 2.0.0 with Java 9. I can run the main class and access all services using Intellij RunAs option, but while compiling using mvn clean install, it only works fine for Java classes but if there is reference to any Groovy class in Java class, following error occurs.

MyService is groovy class and following error is at import statement of MyController.java and all they way same error is generated every time MyService is referred.

**/Users/services9/src/main/java/com/my/controller/MyController.java:[9,24] cannot find symbol
[ERROR]   symbol:   class MyService
[ERROR]   location: package com.my.service**

extract from pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project>
   <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>2.0.0.M1</version>
   </parent>
   <dependencies>
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-web</artifactId>
      </dependency>
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-data-rest</artifactId>
      </dependency>
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-test</artifactId>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-actuator</artifactId>
      </dependency>
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-data-jpa</artifactId>
      </dependency>
      <dependency>
         <groupId>org.codehaus.groovy</groupId>
         <artifactId>groovy-all</artifactId>
         <version>2.4.12</version>
      </dependency>
      <dependency>
         <groupId>org.hibernate</groupId>
         <artifactId>hibernate-spatial</artifactId>
         <version>5.2.10.Final</version>
      </dependency>
      <dependency>
         <groupId>org.postgresql</groupId>
         <artifactId>postgresql</artifactId>
         <scope>runtime</scope>
      </dependency>
      <dependency>
         <groupId>pot-api</groupId>
         <artifactId>pot-schema</artifactId>
         <version>01.50</version>
      </dependency>
      <dependency>
         <groupId>org.mockito</groupId>
         <artifactId>mockito-all</artifactId>
         <version>1.10.8</version>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>javax.xml.bind</groupId>
         <artifactId>jaxb-api</artifactId>
         <version>2.3.0</version>
      </dependency>
      <dependency>
         <groupId>org.geotools</groupId>
         <artifactId>gt-main</artifactId>
         <version>${geotools.version}</version>
      </dependency>
      <dependency>
         <groupId>org.geotools</groupId>
         <artifactId>gt-graph</artifactId>
         <version>${geotools.version}</version>
      </dependency>
      <dependency>
         <groupId>org.geotools</groupId>
         <artifactId>gt-geojson</artifactId>
         <version>${geotools.version}</version>
      </dependency>
      <dependency>
         <groupId>com.google.code.gson</groupId>
         <artifactId>gson</artifactId>
         <version>2.3.1</version>
      </dependency>
      <dependency>
         <groupId>org.apache.commons</groupId>
         <artifactId>commons-lang3</artifactId>
         <version>3.0</version>
      </dependency>
      <dependency>
         <groupId>io.springfox</groupId>
         <artifactId>springfox-swagger-ui</artifactId>
         <version>2.2.2</version>
         <scope>compile</scope>
      </dependency>
      <dependency>
         <groupId>io.springfox</groupId>
         <artifactId>springfox-swagger2</artifactId>
         <version>2.2.2</version>
         <scope>compile</scope>
      </dependency>
      <dependency>
         <groupId>com.google.guava</groupId>
         <artifactId>guava</artifactId>
         <version>19.0</version>
      </dependency>
      <dependency>
         <groupId>org.springframework.cloud</groupId>
         <artifactId>spring-cloud-starter-config</artifactId>
         <version>2.0.0.M1</version>
      </dependency>
      <dependency>
         <groupId>com.sun.jersey</groupId>
         <artifactId>jersey-core</artifactId>
         <version>1.8</version>
      </dependency>
      <dependency>
         <groupId>com.jayway.jsonpath</groupId>
         <artifactId>json-path</artifactId>
         <version>2.2.0</version>
      </dependency>
      <dependency>
         <groupId>org.codehaus.groovy.modules.http-builder</groupId>
         <artifactId>http-builder</artifactId>
         <version>0.7.1</version>
         <exclusions>
            <exclusion>
               <groupId>org.apache.httpcomponents</groupId>
               <artifactId>httpclient</artifactId>
            </exclusion>
         </exclusions>
      </dependency>
   </dependencies>
   <plugins>
      <plugin>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-maven-plugin</artifactId>
         <version>2.0.0.M1</version>
      </plugin>
      <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-jar-plugin</artifactId>
         <version>3.0.2</version>
      </plugin>
      <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-compiler-plugin</artifactId>
         <version>3.6.2</version>
         <configuration>
            <source>9</source>
            <target>9</target>
            <showWarnings>true</showWarnings>
            <showDeprecation>true</showDeprecation>
            <compilerArgs>
               <arg>--add-modules</arg>
               <arg>java.xml.bind</arg>
            </compilerArgs>
         </configuration>
         <dependencies>
            <dependency>
               <groupId>org.codehaus.groovy</groupId>
               <artifactId>groovy-eclipse-compiler</artifactId>
               <version>2.9.2-01</version>
            </dependency>
            <dependency>
               <groupId>org.codehaus.groovy</groupId>
               <artifactId>groovy-eclipse-batch</artifactId>
               <version>2.4.12-04</version>
            </dependency>
         </dependencies>
      </plugin>
   </plugins>
</project>

Upvotes: 2

Views: 916

Answers (1)

Naman
Naman

Reputation: 32028

You have probably missed to configure the maven-compiler-plugin with the following configuration additionally :

<build>
...
<plugins>
  <plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.6.1</version><!-- 3.1 is the minimum -->
    <configuration>
      <compilerId>groovy-eclipse-compiler</compilerId>
      <compilerArgument>indy</compilerArgument><!-- optional; supported by batch 2.4.12-04+ -->
    </configuration>
    <dependencies>
      <dependency>
        <groupId>org.codehaus.groovy</groupId>
        <artifactId>groovy-eclipse-compiler</artifactId>
        <version>2.9.2-03</version> <!--latest -->
      </dependency>
      <dependency>
        <groupId>org.codehaus.groovy</groupId>
        <artifactId>groovy-eclipse-batch</artifactId>
        <version>2.4.12-04</version><!--latest-->
      </dependency>
    </dependencies>
  </plugin>
...

as stated in the Groovy-Eclipse-Maven-plugin documentation.

Upvotes: 1

Related Questions