Vaadin集成到Eclipse中的Grails项目中时遇到了一些麻烦。
我正在使用Spring Tool Suite(版本3.6.3)和Grails(版本2.4.4)提供的Eclipse(版本4.4 Luna)。
我创建一个Grails项目:
我正在阅读Vaadin Cookbook一书,作者说,为了在Grails项目中使用Vaadin,必须安装Grails的Vaadin插件。作者说应该:
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/