【问题标题】:Vaadin - Spring Boot Application Not CompilingVaadin - Spring Boot 应用程序未编译
【发布时间】:2018-06-24 15:05:15
【问题描述】:

我是 Vaadin 初学者。我尝试实现教程中的代码,但我的应用程序无法编译。这是一个简单的 Spring Boot 应用程序,由三个类组成。第一个类是spring boot的入口点,主类。其他两个类是 vaadin 类。

<?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 类

@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

谢谢。

【问题讨论】:

  • 尝试使用 maven 打印依赖关系树。也许 Vaadin 有 2 个不同的版本?您使用的是 Java 9 吗?
  • @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
  • 我对 maven 没有经验,您可以添加“maven”标签以从其他人那里获得如何打印依赖项的帮助。但是,请记住,在编译您自己的小部件集时,Vaadin 8 仍然与 Java 9 不完全兼容(请参阅blog),以防万一您想这样做。
  • 谢谢。有效。我已将 java 版本从 9 更改为 8,并且可以正常工作。你最大化了我的时间。尊重!
  • 很好 :) ...请对您的问题发表简短的回答,以便未来的 SO 用户可以轻松查看解决方案。

标签: java maven spring-boot vaadin8 vaadin4spring


【解决方案1】:

将我的 IDE 的 java sdk 更改为 8 解决了这个问题。这是Henri Muurimaa的摘录:

“如今,Vaadin 框架的服务器端方面与 Java 9 完美配合。如果您的应用程序不使用 Vaadin 插件,您可以在 Java 9 JVM 上启动您的应用程序,一切正常。 但是,如果您的应用确实使用了附加组件,您会注意到 Java 9 尚不支持编译您的小部件集。原因是 Java 9 与我们用于将特定于应用的客户端修改编译为 JavaScript 的 GWT 版本之间略有不兼容.有一个修复程序,但尚未发布。我们不想依赖快照,所以一旦固定的 GWT 版本上线,我们就会发布维护版本。 作为一种解决方法,如果您使用来自 Vaadin Directory 的插件,您可以使用我们的云服务,该服务将按需编译应用程序小部件集。它非常易于使用,请参阅上面的博文了解详细信息和说明。”

因此vaadin-spring-boot-starter artifact 可能存在与 Java 9 的兼容性问题。

【讨论】:

    猜你喜欢
    • 2023-02-03
    • 2015-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-27
    • 1970-01-01
    • 2022-01-06
    相关资源
    最近更新 更多