gpt4 book ai didi

maven-2 - 如何运行最基本的Vaadin应用程序

转载 作者:行者123 更新时间:2023-12-02 12:12:09 25 4
gpt4 key购买 nike

我一直在尝试创建一个开箱即用的Vaadin应用程序,但迄今为止没有成功。

使用IntelliJ IDEA 14,添加了正确的Vaadin maven原型并创建了应用程序。
最后,我得到了三个项目文件夹(生产,UI和小部件集),根据教程,我希望在src下只有几个文件。无论如何。

所以现在当我尝试在Tomcat下部署时,我臭名昭著


要求的资源
[/VAADIN/widgetsets/com.vaadin.DefaultWidgetSet/com.vaadin.DefaultWidgetSet.nocache.js]
从文件系统或通过类加载器找不到。


错误。有关如何更改web.xml文件以解决该问题的足够文章。但是,我没有要更改的web.xml文件。

我也不需要添加任何客户端js,因此我真的不需要任何这些东西,我只需要服务器端Vaadin。

我是否可以摆脱整个WidgetSet的依赖关系,从而摆脱这一错误,并且只运行最基本的服务器端Vaadin应用程序而没有所有花哨的事情?

我尝试注释掉所有对客户端编译器,widgetset的引用,以及我对Java的一点点了解使我迷失了一切。

一些天才的见识会很棒。提前致谢。

最佳答案

因此,我对Vaadin的工作原理有一个大概的了解。这里有一些背景信息只是为了清除一些问题,也可能将相关信息也提供给其他感兴趣的人。

GWT的想法是,您可以使用Java编写应用程序并通过GWT编译器运行它。您可以直接在浏览器中运行javascript。编译器本身就是GWT的大部分。就小部件或组件而言,现成功能的选项非常狭窄。他们让GWT用户或其他框架制造商填补小部件/图形的空白,更像是“自己动手”。

Vaadin使用GWT,但与大多数基于GWT构建的框架有些不同。与其他GWT扩展框架一样,Vaadin包含一组小部件,使您无需修改​​小部件即可构建应用程序的大部分。 Vaadin所做的不同之处在于,它可以对小部件进行预编译并在其之上进行编译,并为您提供一个通信管理器,使您可以从服务器引导小部件。此处的主要区别在于,在几乎所有其他GWT框架中,您都需要在每次UI更改后都必须运行GWT编译器,而在Vaadin中则不必这样做,因为服务器使用JSON消息来引导布局和小部件。在Vaadin中,您在更改窗口小部件的行为时进行编译,而不是在使用时进行编译。

由于Vaadin不需要您一直都在“ GWT编译”应用程序,因此它可以为您提供预编译的小部件集,以满足您的基本需求。这称为DefaultWidgetSet。只要您不进行客户端更改或使用在根目录中找到的任何附件就足够了。

然后到实际问题。您使用的原型是一周前发布的。我不知道您要指的是哪个教程,但我敢打赌,它仍然是指旧的原型,应该对其进行更新。通常,您应该能够按照以下步骤运行应用程序:


用原型创建项目
在根文件夹中运行mvn install
在ui文件夹中运行mvn jetty:run(或者通过您的IDE将ui部署到另一个servlet容器中,例如tomcat)


因为您收到了发布的错误消息,所以它表明应用程序实际上正在尝试使用预编译版本,这很好,但是由于某种原因找不到它。它应该来自widgetset模块,来自其中的vaadin-client-compiled依赖项:

<dependency>
<groupId>com.vaadin</groupId>
<artifactId>vaadin-client-compiled</artifactId>
<version>${vaadin.version}</version>
</dependency>


$ {vaadin.version}可以全局定义(如您应该在此处定义),也可以直接在其中输入版本号,例如 7.3.7
由于某种原因,它似乎找不到。如果不存在,则将其添加到widgetset pom.xml,然后在widgetset中运行 mvn install(或父级,都可以)。然后转到ui并使用 mvn jetty:run重新启动服务器。

我不确定,但是我的猜测是原型具有自定义小部件集,并且不依赖于预编译的小部件集。之后,您希望使用默认的小部件集而不是自定义的小部件集,并在UI类中删除了该小部件集的注释,但是尚未为默认的widgeset添加依赖项。

由于您的用例非常简单,因此所涉及的原型可能有点过大。如果您不开发客户端,则没有理由在ui和widgetset中拆分项目,并且此时构建用于生产就绪的部署程序包的模块(生产模块)肯定不在范围内。因此,从这个意义上讲,小部件集,生产模块和父模块对您完全不相关。

如果您想要一个更简单的项目结构,则可以克隆我在以下位置找到的git repo: https://github.com/Peppe-/hello-world。它以旧的Vaadin默认的单模块原型为基础,但我剔除了无需大惊小怪地开发纯服务器端所需的一切。 pom.xml从大约200行声明减少到80行,但这也意味着如果要使用其他功能,则必须重新添加内容。像编译器一样,或者如果要添加css(修改主题)。您可以使用以下命令获取并运行它:

git clone https://github.com/Peppe-/hello-world.git
cd hello-world
mvn jetty:run


或者,在第一步之后,您可以将其导入IDEA并从那里运行它。如果要使用自己的包名称,请重命名该包(通过重命名src中的文件夹)。

抱歉,我有点被抬走了。如果我错过了什么,请问所有问题。

关于maven-2 - 如何运行最基本的Vaadin应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27601373/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com