Spring Boot 2, Java 10 и QueryDsl - ошибки при переходе с Spring Boot 1.5 на 2 - PullRequest
0 голосов
/ 01 июня 2018

Миграция приложения Spring Boot 1.5 (которое изначально было создано с помощью JHipster 4.13.3, с Java 8 и QueryDsl 4.1.4) в Spring Boot 2.x (с использованием Java 10).

Использование QueryDsl работалов 1.5, теперь с 2.x я получаю следующие ошибки сборки, например:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.7.0:compile (default-compile) on project webfit: Compilation failure: Compilation failure:
[ERROR] .../WebConfigurer.java:[15,58] package org.springframework.boot.context.embedded.undertow does not exist
[ERROR] .../WebConfigurer.java:[35,66] cannot find symbol
[ERROR] symbol: class EmbeddedServletContainerCustomizer
[ERROR] .../WebConfigurer.java:[68,27] cannot find symbol
[ERROR] symbol:   class ConfigurableEmbeddedServletContainer
[ERROR] location: ...config.WebConfigurer
[ERROR] .../WebConfigurer.java:[93,45] cannot find symbol
[ERROR] symbol:   class ConfigurableEmbeddedServletContainer
[ERROR] location: class ...config.WebConfigurer
[ERROR] .../WebConfigurer.java:[14,1] package org.springframework.boot.context.embedded does not exist
[ERROR] .../ApplicationWebXml.java:[5,44] package org.springframework.boot.web.support does not exist
[ERROR] .../ApplicationWebXml.java:[11,40] cannot find symbol
[ERROR] symbol: class SpringBootServletInitializer
[ERROR] ...Repository.java:[5,41] cannot find symbol
[ERROR] symbol:   class QueryDslPredicateExecutor
[ERROR] location: package org.springframework.data.querydsl
[ERROR] ...Repository.java:[14,92] cannot find symbol
[ERROR] symbol: class QueryDslPredicateExecutor
[ERROR] ...Repository.java:[7,41] cannot find symbol
[ERROR] symbol:   class QueryDslPredicateExecutor
[ERROR] location: package org.springframework.data.querydsl
[ERROR] ...Repository.java:[15,90] cannot find symbol
[ERROR] symbol: class QueryDslPredicateExecutor
[ERROR] .../service/MailService.java:[16,29] package org.thymeleaf.spring4 does not exist
[ERROR] .../service/MailService.java:[41,19] cannot find symbol
[ERROR] symbol:   class SpringTemplateEngine
[ERROR] location: class ...service.MailService
[ERROR] .../service/MailService.java:[44,42] cannot find symbol
[ERROR] symbol:   class SpringTemplateEngine
[ERROR] location: class ...service.MailService
[ERROR] ...Repository.java:[7,41] cannot find symbol
[ERROR] symbol:   class QueryDslPredicateExecutor
[ERROR] location: package org.springframework.data.querydsl
[ERROR] ...Repository.java:[15,110] cannot find symbol
[ERROR] symbol: class QueryDslPredicateExecutor
[ERROR] ...App.java:[11,1] package org.springframework.boot.actuate.autoconfigure does not exist
[ERROR] ...Repository.java:[8,41] cannot find symbol
[ERROR] symbol:   class QueryDslPredicateExecutor
[ERROR] location: package org.springframework.data.querydsl
[ERROR] ...Repository.java:[16,95] cannot find symbol
[ERROR] symbol: class QueryDslPredicateExecutor
[ERROR] ...Repository.java:[5,41] cannot find symbol
[ERROR] symbol:   class QueryDslPredicateExecutor
[ERROR] location: package org.springframework.data.querydsl
[ERROR] ...Repository.java:[14,90] cannot find symbol
[ERROR] symbol: class QueryDslPredicateExecutor
[ERROR] ...App.java:[25,37] cannot find symbol
[ERROR] symbol: class MetricFilterAutoConfiguration
[ERROR] ...App.java:[25,74] cannot find symbol
[ERROR] symbol: class MetricRepositoryAutoConfiguration

Как их решить?

В POM я использую:

...
<jhipster-dependencies.version>2.0.2</jhipster-dependencies.version>
<spring-boot.version>2.0.2.RELEASE</spring-boot.version>
...

Интересно, что в Eclipse я вижу в Maven Dependencies использование 2.0.1 (но я указал 2.0.2), например:

...
spring-boot-starter-2.0.1.RELEASE.jar
spring-boot-starter-cache-2.0.1.RELEASE.jar
spring-context-5.0.5.RELEASE.jar
spring-core-5.0.5.RELEASE.jar
spring-boot-actuator-2.0.1.RELEASE.jar
spring-boot-2.0.1.RELEASE.jar
spring-data-jpa-2.0.6.RELEASE.jar
spring-boot-starter-web-2.0.1.RELEASE.jar
...
jhipster-1.3.0.jar
...
hibernate-jcache-5.2.16.Final.jar
hibernate-core-5.2.16.Final.jar
hibernate-jpa-2.1-api-1.0.0.jar
hibernate-commons-annotations-5.0.1.Final.jar
hibernate-validator-6.0.10.Final.jar
...
querydsl-apt-4.1.4.jar
querydsl-codegen-4.1.4.jar
...

Не уверен, какие другие зависимости перечислить здесь, которые могут представлять интерес дляпроблема.

Также стоит упомянуть, что в нашем POM мы не используем POM Spring Boot Starter Parent, как это обычно генерируется с помощью Spring Initializr:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.2.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

Кроме того, чтоэто правильное использование:

<java.version>10</java.version>

or 

<java.version>1.10</java.version>

Последнее упоминание: в Eclipse написано «JRE System Library [J2SE-1.5]», я не знаю, как получается, что существует «J2SE-1.5»,до этого было 1,8 насколько я помню.В разделе «Установленные JRE» это «java-10-oracle (по умолчанию)» в папке «/ usr / lib / jvm / java-10-oracle».

Если я открою системную библиотеку JRE, там все будет сказано "/usr/lib/jvm/java-10-oracle/...".

Возможно, из-за" J2SE-1.5 "Я получаю некоторые проблемы с Java в Eclipse, например:

'<>' operator is not allowed for source level below 1.7

Если я перейду к этой проблеме Java, это будет строка:

...
Set<Authority> authorities = new HashSet<>();
...

Спасибо!

...