eclipse - 如何将Vaadin 7.3.9集成到Eclipse中的Grails项目中?

标签 eclipse grails vaadin

Vaadin集成到Eclipse中的Grails项目中时遇到了一些麻烦。

我正在使用Spring Tool Suite(版本3.6.3)和Grails(版本2.4.4)提供的Eclipse(版本4.4 Luna)。

我创建一个Grails项目:

  • 文件->新建-> Grails项目

  • 我正在阅读Vaadin Cookbook一书,作者说,为了在Grails项目中使用Vaadin,必须安装Grails的Vaadin插件。作者说应该:
  • 打开grails控制台并输入:grails> install-plugin vaadin

  • 但是,自Grails 2.4.3起不推荐使用此插件,并且必须将插件添加到BuildConfig.groovy文件中(基于本教程的其中一位合著者-> https://vaadin.com/wiki/-/wiki/Main/Vaadin%20on%20Grails%20-%20Create%20project%20in%20IntelliJ%20IDEA(在本教程的基础上使用IntelliJIDEA链接的URL,而不是Eclipse)):
    // BuildConfig.groovy
    // ...
    grails.project.dependency.resolution = {
         //...
          plugins {
              //...
              compile ":vaadin:7.3.9"
              //...
          }
    }
    

    但是那我该怎么办?他们在书中说grails-app/vaadin文件夹必须标记为源文件夹(Build Path -> Use as source folder),但是我的Grails项目中没有这样的文件夹。

    另外,从上面链接了InlliJIDEA的教程中,作者说:

    现在,我尝试编辑UrlMappings.groovy文件以删除所有映射:
    class UrlMappings {
    
        static mappings = {
    
        }
    }
    

    然后,当我运行run-app命令时,出现以下异常:
    |Running Grails application
    objc[42370]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/bin/java and /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre/lib/libinstrument.dylib. One of the two will be used. Which one is undefined.
    | Error 2015-01-30 11:33:56,213 [localhost-startStop-1] ERROR context.GrailsContextLoaderListener  - Error initializing the application: Error creating bean with name 'transactionManagerPostProcessor': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager': Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory': Invocation of init method failed; nested exception is org.hibernate.cfg.beanvalidation.IntegrationException: Error activating Bean Validation integration
    Message: Error creating bean with name 'transactionManagerPostProcessor': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager': Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory': Invocation of init method failed; nested exception is org.hibernate.cfg.beanvalidation.IntegrationException: Error activating Bean Validation integration
        Line | Method
    ->>  266 | run       in java.util.concurrent.FutureTask
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
    |   1142 | runWorker in java.util.concurrent.ThreadPoolExecutor
    |    617 | run . . . in java.util.concurrent.ThreadPoolExecutor$Worker
    ^    745 | run       in java.lang.Thread
    Caused by BeanCreationException: Error creating bean with name 'transactionManager': Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory': Invocation of init method failed; nested exception is org.hibernate.cfg.beanvalidation.IntegrationException: Error activating Bean Validation integration
    ->>  266 | run       in java.util.concurrent.FutureTask
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
    |   1142 | runWorker in java.util.concurrent.ThreadPoolExecutor
    |    617 | run . . . in java.util.concurrent.ThreadPoolExecutor$Worker
    ^    745 | run       in java.lang.Thread
    Caused by BeanCreationException: Error creating bean with name 'sessionFactory': Invocation of init method failed; nested exception is org.hibernate.cfg.beanvalidation.IntegrationException: Error activating Bean Validation integration
    ->>  266 | run       in java.util.concurrent.FutureTask
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
    |   1142 | runWorker in java.util.concurrent.ThreadPoolExecutor
    |    617 | run . . . in java.util.concurrent.ThreadPoolExecutor$Worker
    ^    745 | run       in java.lang.Thread
    Caused by IntegrationException: Error activating Bean Validation integration
    ->>  266 | run       in java.util.concurrent.FutureTask
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
    |   1142 | runWorker in java.util.concurrent.ThreadPoolExecutor
    |    617 | run . . . in java.util.concurrent.ThreadPoolExecutor$Worker
    ^    745 | run       in java.lang.Thread
    Caused by NoClassDefFoundError: javax/validation/ParameterNameProvider
    ->>  760 | defineClass in java.lang.ClassLoader
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
    |    142 | defineClass in java.security.SecureClassLoader
    |    455 | defineClass in java.net.URLClassLoader
    |     73 | access$100 in     ''
    |    367 | run . . . in java.net.URLClassLoader$1
    |    361 | run       in     ''
    |    360 | findClass in java.net.URLClassLoader
    |    424 | loadClass in java.lang.ClassLoader
    |    269 | configure in javax.validation.Validation$GenericBootstrapImpl
    |    111 | buildDefaultValidatorFactory in javax.validation.Validation
    |    266 | run . . . in java.util.concurrent.FutureTask
    |   1142 | runWorker in java.util.concurrent.ThreadPoolExecutor
    |    617 | run . . . in java.util.concurrent.ThreadPoolExecutor$Worker
    ^    745 | run       in java.lang.Thread
    Caused by ClassNotFoundException: javax.validation.ParameterNameProvider
    ->>  372 | run       in java.net.URLClassLoader$1
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
    |    361 | run       in     ''
    |    360 | findClass in java.net.URLClassLoader
    |    424 | loadClass in java.lang.ClassLoader
    |    760 | defineClass in     ''
    |    142 | defineClass in java.security.SecureClassLoader
    |    455 | defineClass in java.net.URLClassLoader
    |     73 | access$100 in     ''
    |    367 | run . . . in java.net.URLClassLoader$1
    |    361 | run       in     ''
    |    360 | findClass in java.net.URLClassLoader
    |    424 | loadClass in java.lang.ClassLoader
    |    269 | configure in javax.validation.Validation$GenericBootstrapImpl
    |    111 | buildDefaultValidatorFactory in javax.validation.Validation
    |    266 | run . . . in java.util.concurrent.FutureTask
    |   1142 | runWorker in java.util.concurrent.ThreadPoolExecutor
    |    617 | run . . . in java.util.concurrent.ThreadPoolExecutor$Worker
    ^    745 | run       in java.lang.Thread
    Error |
    Forked Grails VM exited with error
    |Server running. Browse to http://localhost:8080/vaadin-in-grails
    

    它最后显示“服务器正在运行”,但这不是正确的,并且没有根据需要创建grails-app/vaadin文件夹。

    我没有找到涉及该主题的其他教程(特别是我正在搜索我链接的IntelliJIDEA教程的Eclipse版本,但没有找到)。

    因此,据我所知,这本书涵盖的是Grails的较旧版本,其中通过install-plugin不推荐使用的命令安装了插件,但我无法使用它,并且由于尝试使用compile ":vaadin:7.3.9"指令未成功,我在问某人在这里。

    如何解决此问题并开始使用Grails / Vaadin进行编程?

    最佳答案

    不要使用install-plugin方法。

    将其放在BuildConfig.groovy的“插件”部分中:

     compile ":vaadin:7.4.1"
    

    根据我对插件作者的了解,较新版本的Vaadin / Grails插件不再创建grails-app / vaadin目录。相反,现在应该将vaadin代码放在​​典型的src / groovy或src / java文件夹中。

    关于eclipse - 如何将Vaadin 7.3.9集成到Eclipse中的Grails项目中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28232432/

    相关文章:

    java - Eclipse - 如何在整个项目中出现 "Change package declaration to ...."

    java - 如何根据组合选择动态创建 SWT 文本

    grails - 在所有功能测试运行之前 Hook

    security - 保存时修改Grails域

    java - Vaadin网格与表格

    windows - 符号 § 的 Eclipse 问题

    eclipse - 使用 ECLIPSE 部署 Web 应用程序

    java - grails 服务中的深度递归失败

    vaadin - 当 SelectionMode 为 MULTI 时,隐藏 Flow 组件网格中的 "Select All"复选框 (Vaadin 21)

    java - Thread.sleep() 没有暂停执行