Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Maven和Spring Boot的Vaadin自定义组件/小部件_Maven_Gwt_Spring Boot_Vaadin7 - Fatal编程技术网

使用Maven和Spring Boot的Vaadin自定义组件/小部件

使用Maven和Spring Boot的Vaadin自定义组件/小部件,maven,gwt,spring-boot,vaadin7,Maven,Gwt,Spring Boot,Vaadin7,我对vaadin比较陌生,从spring boot应用程序和vaadin spring boot插件开始。在我尝试创建自己的组件/小部件之前,一切都很顺利 不幸的是,我没有找到任何关于如何在spring boot应用程序中设置自定义组件的“官方”示例/文档,因此我不得不搜索web,以了解如何在maven中设置其他插件来编译客户端小部件的代码。据我从日志输出中所知,这些组件的编译工作正常,但当我尝试访问网页上的这些组件时,我得到一个错误: Widgetset 'com.vaadin.Default

我对vaadin比较陌生,从spring boot应用程序和vaadin spring boot插件开始。在我尝试创建自己的组件/小部件之前,一切都很顺利

不幸的是,我没有找到任何关于如何在spring boot应用程序中设置自定义组件的“官方”示例/文档,因此我不得不搜索web,以了解如何在maven中设置其他插件来编译客户端小部件的代码。据我从日志输出中所知,这些组件的编译工作正常,但当我尝试访问网页上的这些组件时,我得到一个错误:

Widgetset 'com.vaadin.DefaultWidgetSet' does not contain implementation for net.gtidev.test.components.MyComponent. Check its component connector's @Connect mapping, widgetsets GWT module description file and re-compile your widgetset. [...]
以下是小部件编译器日志:

[INFO] Using com.vaadin:vaadin-client-compiler version 7.6.4
[ERROR] Mar 22, 2016 10:22:43 AM java.util.prefs.WindowsPreferences <init>
[ERROR] WARNUNG: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0x80000002. Windows RegCreateKeyEx(...) returned error code 5.
[INFO] Compiling module net.gtidev.test.components.TestWidgetset
[INFO]    Computing all possible rebind results for 'com.vaadin.client.metadata.ConnectorBundleLoader'
[INFO]       Rebinding com.vaadin.client.metadata.ConnectorBundleLoader
[INFO]          Invoking generator com.vaadin.server.widgetsetutils.ConnectorBundleLoaderFactory
[INFO]             Populating eager bundle

. . . . . 250 more lines

[INFO]    Computing all possible rebind results for 'com.vaadin.client.ui.dd.VAcceptCriterionFactory'
[INFO]       Rebinding com.vaadin.client.ui.dd.VAcceptCriterionFactory
[INFO]          Invoking generator com.vaadin.server.widgetsetutils.AcceptCriteriaFactoryGenerator
[INFO]             Detecting available criteria ...
[INFO]             creating mapping for com.vaadin.event.dd.acceptcriteria.AcceptAll
[INFO]             creating mapping for com.vaadin.event.dd.acceptcriteria.And
[INFO]             creating mapping for com.vaadin.event.dd.acceptcriteria.ContainsDataFlavor
[INFO]             creating mapping for com.vaadin.event.dd.acceptcriteria.SourceIs
[INFO]             creating mapping for com.vaadin.ui.AbstractSelect.TargetItemIs
[INFO]             creating mapping for com.vaadin.ui.AbstractSelect.AcceptItem
[INFO]             creating mapping for com.vaadin.ui.Table.TableDropCriterion
[INFO]             creating mapping for com.vaadin.ui.Tree.TreeDropCriterion
[INFO]             creating mapping for com.vaadin.event.dd.acceptcriteria.Not
[INFO]             creating mapping for com.vaadin.event.dd.acceptcriteria.Or
[INFO]             creating mapping for com.vaadin.event.dd.acceptcriteria.ServerSideCriterion
[INFO]             creating mapping for com.vaadin.event.dd.acceptcriteria.SourceIsTarget
[INFO]             creating mapping for com.vaadin.event.dd.acceptcriteria.TargetDetailIs
[INFO]             creating mapping for com.vaadin.ui.Tree.TargetInSubtree
[INFO]             Done. (0seconds)
[INFO]    Compiling 1 permutation
[INFO]       Compiling permutation 0...
[INFO]    Compile of permutations succeeded
[INFO]    Compilation succeeded -- 59,217s
[INFO] Linking into C:\projects\misc\vaadin-boot\target\vaadin-boot-0.0.1-SNAPSHOT\net.gtidev.test.components.TestWidgetset
[INFO]    Link succeeded
[INFO]    Linking succeeded -- 0,492s
[INFO]使用com.vaadin:vaadin客户端编译器版本7.6.4
[错误]2016年3月22日10:22:43 AM java.util.prefs.WindowsPreferences
[错误]警告:无法在根0x8000002处打开/创建prefs根节点软件\JavaSoft\prefs。Windows RegCreateKeyEx(…)返回错误代码5。
[信息]编译模块net.gtidev.test.components.TestWidgetset
[信息]正在计算'com.vaadin.client.metadata.ConnectorBundleLoader'的所有可能重新绑定结果
[信息]重新绑定com.vaadin.client.metadata.ConnectorBundleLoader
[信息]调用生成器com.vaadin.server.widgetsetutils.ConnectorBundleLoaderFactory
[信息]正在填充渴望的捆绑包
. . . . . 250多行
[信息]计算'com.vaadin.client.ui.dd.VAcceptCriterionFactory'的所有可能重新绑定结果
[信息]重新绑定com.vaadin.client.ui.dd.VAcceptCriterionFactory
[信息]调用生成器com.vaadin.server.widgetsetutils.AcceptCriteriaFactoryGenerator
[信息]正在检测可用条件。。。
[信息]为com.vaadin.event.dd.acceptcriteria.AcceptAll创建映射
[信息]为com.vaadin.event.dd.acceptcriteria.And创建映射
[信息]正在为com.vaadin.event.dd.acceptcriteria.ContainsDataFlavor创建映射
[信息]正在为com.vaadin.event.dd.acceptcriteria.SourceIs创建映射
[信息]为com.vaadin.ui.AbstractSelect.TargetItemIs创建映射
[信息]为com.vaadin.ui.AbstractSelect.AcceptItem创建映射
[信息]为com.vaadin.ui.Table.TableDropCriteria创建映射
[信息]为com.vaadin.ui.Tree.treeDropCriteria创建映射
[信息]正在为com.vaadin.event.dd.acceptcriteria.Not创建映射
[信息]正在为com.vaadin.event.dd.acceptcriteria.Or创建映射
[信息]正在为com.vaadin.event.dd.acceptcriteria.ServerSideCriteria创建映射
[信息]正在为com.vaadin.event.dd.acceptcriteria.SourceIsTarget创建映射
[信息]正在为com.vaadin.event.dd.acceptcriteria.TargetDetailIs创建映射
[信息]为com.vaadin.ui.Tree.targetSubtree创建映射
[信息]完成。(0秒)
[信息]编译1个排列
[信息]正在编译置换0。。。
[信息]已成功编译置换
[信息]编译成功--59217s
[信息]链接到C:\projects\misc\vaadin boot\target\vaadin-boot-0.0.1-SNAPSHOT\net.gtidev.test.components.TestWidgetset
[信息]链接成功
[信息]链接成功--0492s
我用于自定义组件的文件是由EclipseVaadin插件在一个Vaadin7项目中生成的,我仅为此目的创建了该项目。当我在eclipse中启动这个Vaadin7项目时,该组件工作正常。然后,我将这些文件复制到SpringBootMaven项目中,在该项目中不再加载自定义组件

我知道spring boot应用程序的引导机制和布局与“经典”webapps略有不同,其中静态资源不是从webapp文件夹加载的,而是从classpath:/static文件夹加载的。我认为问题的核心与这一事实有关,但我不知道如何解决它

我的插件配置(我尝试使用和不使用注释选项):


com.vaadin
vaadin maven插件
7.6.4
真的
真的
net.gtidev.test.components.TestWidgetset
资源
编译
我尝试了不同的maven插件组合和配置。在一个示例中,还提到了一个Google GWT插件,但在代码上运行该插件会产生与vaadin插件相同的日志输出:

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>gwt-maven-plugin</artifactId>
  <version>2.5.1</version>
  <!--<configuration>-->
  <!--<webappDirectory>src/main/webapp/VAADIN/widgetsets</webappDirectory>-->
  <!--<extraJvmArgs>-Xmx512M -Xss1024k</extraJvmArgs>-->
  <!--<runTarget>clean</runTarget>-->
  <!--<hostedWebapp>${project.build.directory}/${project.build.finalName}</hostedWebapp>-->
  <!--<noServer>true</noServer>-->
  <!--<port>8080</port>-->
  <!--<soycDetailed>false</soycDetailed>-->
  <!--</configuration>-->
  <executions>
    <execution>
      <goals>
        <goal>resources</goal>
        <goal>compile</goal>
      </goals>
    </execution>
  </executions>
</plugin>

org.codehaus.mojo
GWTMaven插件
2.5.1
资源
编译

要使用自定义客户端扩展、Vaadin插件,您需要将Vaadin maven插件添加到您的项目中。它将扫描您使用的附加组件,GWT将为您的项目编译一个包含这些扩展的新widgetset


如果使用start.spring.io创建项目,默认情况下maven插件不在项目中。例如,使用此原型或基于servlet的官方原型创建一个示例项目,并将vaadin maven插件相关部分从pom.xml复制到您的项目pom.xml。然后做一个完整的构建,一切都应该按预期进行。

不要将gwt maven插件用于Vaadin 7,gwt maven插件用于Vaadin 6系列。我认为您最初的尝试几乎是正确的,只是boot没有查看src/main/webapp,所以需要进行配置。请看下面我的答案。非常感谢!“这个改变”帮我解决了这个问题。我仍然需要做一些工作,我必须将@Widgetset(“MyWidgetset”)添加到我的主ui中,现在它可以工作了!你为什么不写下你需要使用
@Widgetset注释(“MyWidgetset”)
?答案有点过时,只是在2018年更新了它。
<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>gwt-maven-plugin</artifactId>
  <version>2.5.1</version>
  <!--<configuration>-->
  <!--<webappDirectory>src/main/webapp/VAADIN/widgetsets</webappDirectory>-->
  <!--<extraJvmArgs>-Xmx512M -Xss1024k</extraJvmArgs>-->
  <!--<runTarget>clean</runTarget>-->
  <!--<hostedWebapp>${project.build.directory}/${project.build.finalName}</hostedWebapp>-->
  <!--<noServer>true</noServer>-->
  <!--<port>8080</port>-->
  <!--<soycDetailed>false</soycDetailed>-->
  <!--</configuration>-->
  <executions>
    <execution>
      <goals>
        <goal>resources</goal>
        <goal>compile</goal>
      </goals>
    </execution>
  </executions>
</plugin>