Vaadin — приложение Spring Boot не компилируется

Я новичок в Ваадин. Я попытался реализовать код из учебника, но мое приложение не смогло скомпилироваться. Это простое приложение Spring Boot, состоящее из трех классов. Первый класс — это точка входа в весеннюю загрузку, основной класс. Два других класса — это классы ваадин.

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.demo</groupId>
<artifactId>vaadin-tut</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>vaadin-tut</name>
<description>Demo project for Spring Boot</description>

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

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
    <vaadin.version>8.2.0</vaadin.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>com.vaadin</groupId>
        <artifactId>vaadin-spring-boot-starter</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.vaadin</groupId>
            <artifactId>vaadin-bom</artifactId>
            <version>${vaadin.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

TodoUI Class

@SpringUI
public class TodoUI extends UI {

private VerticalLayout root;

@Autowired
private TodoLayout todoLayout;

@Override
protected void init(VaadinRequest vaadinRequest) {
    setLayout();
    addHeader();
    addForm();
    addTodoList();
    addDeleteButton();
}

private void setLayout() {
    root = new VerticalLayout();
    setContent(root);
}

private void addHeader() {
    root.addComponent(new Label("TODOs"));
}

private void addForm() {
    HorizontalLayout formLayout = new HorizontalLayout();
    TextField task = new TextField();
    Button add = new Button("Add");
    formLayout.addComponents(task, add);
    root.addComponent(formLayout);
}

private void addTodoList() {
    root.addComponent(todoLayout);
}

private void addDeleteButton() {
    root.addComponent(new Button("Deleted Completed"));
}
}

Класс макета ToDo

@SpringComponent
public class TodoLayout extends VerticalLayout {
}

Вот лог сервера

Information:java: /root/.m2/repository/com/vaadin/vaadin-server/8.2.0/vaadin-server-8.2.0.jar(/com/vaadin/server/AbstractClientConnector.java) uses unchecked or unsafe operations.
Information:java: Recompile with -Xlint:unchecked for details.
Information:java: Errors occurred while compiling module 'vaadin-tut'
Information:javac 9.0.1 was used to compile java sources
Information:1/16/18 12:16 AM - Compilation completed with 2 errors and 6 warnings in 3s 1ms
Error:java: method <T>addAction(T) is already defined in interface com.vaadin.event.Action.Notifier
Error:java: method <T>removeAction(T) is already defined in interface com.vaadin.event.Action.Notifier
Warning:java: com.vaadin.ui.LegacyComponent in com.vaadin.ui has been deprecated
Warning:java: com.vaadin.server.LegacyCommunicationManager in com.vaadin.server has been deprecated
Warning:java: encodeState(com.vaadin.server.ClientConnector,com.vaadin.shared.communication.SharedState) in com.vaadin.server.LegacyCommunicationManager has been deprecated
Warning:java: createConnectorId(com.vaadin.server.ClientConnector) in com.vaadin.server.VaadinSession has been deprecated
Warning:java: removeListener(java.lang.Class<?>,java.lang.Object,java.lang.String) in com.vaadin.event.MethodEventSource has been deprecated
Warning:java: removeListener(java.lang.Class<?>,java.lang.Object,java.lang.reflect.Method) in com.vaadin.event.MethodEventSource has been deprecated

Спасибо.


person byteHunt3r    schedule 15.01.2018    source источник
comment
Попробуйте распечатать дерево зависимостей с помощью maven. Может быть, у Ваадина есть 2 разные версии? Вы используете Java 9?   -  person Steffen Harbich    schedule 16.01.2018
comment
@SteffenHarbich Да. Я использую Java 9. Я получил это предупреждение, когда запускал эту команду: ./mvnw dependency:tree -Dverbose -Dincludes=commons-collections [WARNING] Using Maven 2 dependency tree to get verbose output, which may be inconsistent with actual Maven 3 resolution   -  person byteHunt3r    schedule 16.01.2018
comment
У меня нет опыта работы с maven, вы можете добавить тег maven, чтобы получить помощь от других людей, как печатать зависимости. Однако имейте в виду, что Vaadin 8 по-прежнему не полностью совместим с Java 9 при компиляции собственного набора виджетов (см. блог) на тот случай, если вы захотите это сделать.   -  person Steffen Harbich    schedule 16.01.2018
comment
Спасибо. Это сработало. Я изменил версию Java с 9 на 8, и это сработало. Вы максимизировали мои часы. Уважать!   -  person byteHunt3r    schedule 16.01.2018
comment
Хорошо :) ... пожалуйста, опубликуйте краткий ответ на свой вопрос, чтобы будущие пользователи SO могли легко увидеть решение.   -  person Steffen Harbich    schedule 17.01.2018


Ответы (1)


Изменение java sdk моей IDE на 8 решило проблему. Вот выдержка из Генри Мууримаа:

"Сегодня аспекты серверной части Vaadin Framework безупречно работают с Java 9. Если ваше приложение не использует надстройки Vaadin, вы можете запустить свое приложение на Java 9 JVM, и все будет работать. Однако, если ваш приложение использует надстройки, вы заметите, что компиляция вашего набора виджетов еще не поддерживается в Java 9. Причина — небольшая несовместимость между Java 9 и версией GWT, которую мы используем для компиляции клиентских модификаций приложения в JavaScript. исправление, но оно еще не появилось в выпуске. Мы не хотим зависеть от моментального снимка, поэтому выпустим отладочную версию, как только исправленная версия GWT появится в Интернете. В качестве обходного пути, если вы используете надстройку из каталога Vaadin, вы можете использовать наш облачный сервис, который будет компилировать наборы виджетов приложений по запросу. Он очень прост в использовании, подробности и инструкции см. в сообщении блога выше."

Следовательно, артефакт vaadin-spring-boot-starter может иметь проблемы совместимости с Java. 9.

person byteHunt3r    schedule 17.01.2018