【问题标题】:Java 9 with Spring boot 2 cannot detect groovy classes带有 Spring boot 2 的 Java 9 无法检测到 groovy 类
【发布时间】:2017-11-29 14:33:32
【问题描述】:

我正在尝试使用 Java 9 运行 SpringBoot 2.0.0。我可以使用 Intellij RunAs 选项运行主类并访问所有服务,但是在使用 mvn clean install 编译时,它只适用于 Java 类,但如果有引用Java类中的任何Groovy类,会出现以下错误。

MyService 是 groovy 类,在 MyController.java 的导入语句中出现以下错误,每次引用 MyService 时都会产生相同的错误。

**/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**

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

【问题讨论】:

  • 你能分享类定义和完整的失败日志吗?另外你使用的是什么版本的 groovy?
  • Groovy 版本:2.4.12

标签: spring-boot groovy java-9 maven-compiler-plugin


【解决方案1】:

您可能错过了使用以下配置额外配置maven-compiler-plugin:

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

如Groovy-Eclipse-Maven-plugin 文档中所述。

【讨论】:

    猜你喜欢
    • 2018-09-10
    • 2020-01-07
    • 2015-10-06
    • 1970-01-01
    • 1970-01-01
    • 2016-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多