【发布时间】:2015-03-29 17:23:31
【问题描述】:
我在将 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 (在链接的 URL 中使用 IntelliJIDEA 而不是 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 进行编程?
【问题讨论】: