Миграция приложения 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<>();
...
Спасибо!