2013-03-27 34 views
8

當我啓動我的grails 2.2.0應用程序時,我隨機將錯誤信息作爲下面,但它也隨機成功開始沒有錯誤。 沒有更改代碼,我只是嘗試多次運行grails dev run-appGrails run-app隨機拋出:java.lang.NoClassDefFoundError:Lorg/codehaus/groovy/grails/plugins/web/async/api/ControllersAsyncApi

$ grails dev run-app 

我也試過之前grails clean,但都沒有區別;錯誤仍然是隨機發生的。

錯誤啓動時:

| Packaging Grails application..... 
webxml.WebxmlGrailsPlugin Loading default config file: class DefaultWebXmlConfig 
webxml.WebxmlGrailsPlugin Did not find application config file: WebXmlConfig 
webxml.WebxmlGrailsPlugin Loading default config file: class DefaultWebXmlConfig 
| Running Grails application 
context.GrailsContextLoader [GrailsContextLoader] Loading context. Creating parent application context 
context.ContextLoader Context initialization failed 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'pluginManager' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.RuntimeException: Unable to locate constructor with Class parameter for class org.codehaus.groovy.grails.commons.DefaultGrailsControllerClass 
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:138) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
    at java.lang.Thread.run(Thread.java:680) 
Caused by: java.lang.RuntimeException: Unable to locate constructor with Class parameter for class org.codehaus.groovy.grails.commons.DefaultGrailsControllerClass 
    ... 5 more 
Caused by: java.lang.reflect.InvocationTargetException 
    ... 5 more 
Caused by: java.lang.NoClassDefFoundError: Lorg/codehaus/groovy/grails/plugins/web/async/api/ControllersAsyncApi; 
    at java.lang.Class.privateGetDeclaredFields(Class.java:2291) 
    at java.lang.Class.getDeclaredFields(Class.java:1743) 
    ... 5 more 
Caused by: java.lang.ClassNotFoundException: org.codehaus.groovy.grails.plugins.web.async.api.ControllersAsyncApi 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
    ... 7 more 
context.GrailsContextLoader Error initializing the application: Error creating bean with name 'pluginManager' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.RuntimeException: Unable to locate constructor with Class parameter for class org.codehaus.groovy.grails.commons.DefaultGrailsControllerClass 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'pluginManager' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.RuntimeException: Unable to locate constructor with Class parameter for class org.codehaus.groovy.grails.commons.DefaultGrailsControllerClass 
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:138) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
    at java.lang.Thread.run(Thread.java:680) 
Caused by: java.lang.RuntimeException: Unable to locate constructor with Class parameter for class org.codehaus.groovy.grails.commons.DefaultGrailsControllerClass 
    ... 5 more 
Caused by: java.lang.reflect.InvocationTargetException 
    ... 5 more 
Caused by: java.lang.NoClassDefFoundError: Lorg/codehaus/groovy/grails/plugins/web/async/api/ControllersAsyncApi; 
    at java.lang.Class.privateGetDeclaredFields(Class.java:2291) 
    at java.lang.Class.getDeclaredFields(Class.java:1743) 
    ... 5 more 
Caused by: java.lang.ClassNotFoundException: org.codehaus.groovy.grails.plugins.web.async.api.ControllersAsyncApi 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
    ... 7 more 

環境:

  • 的Mac OS X Lion的
  • JDK 1.6.0_31

類似的帖子,但還是不同的,因爲我m沒有運行Tomcat:

+0

您可以嘗試使用像jarscan http://java.net/projects/jarscan這樣的實用程序,並檢查您的應用程序中是否具有相同庫的不同版本 – 2013-03-27 10:58:28

+0

Run-app默認使用tomcat插件 - 除非您已經安裝了jetty插件。在任何時候你都運行過Grails升級嗎?運行grails升級後,我在2.2.0中看到了一些奇怪的行爲。也許給碼頭插件嘗試一下? – nickdos 2013-03-27 11:13:52

+0

fyi - 我將grails 2.2.0從grails 2.2.0更新到grails 2.2.1,並且還沒有問題。將進一步觀察。 – 2013-04-03 21:00:44

回答

5

嘗試,以紀念你的servlet版本V3.0。我有同樣的問題,零星的,並通過移動到V.3.0

文件解決了這個問題:BuildConfig.groovy

grails.servlet.version =「3.0」 //變化取決於目標容器順應性(2.5或3.0)

之後與Grails插件 - 異步-2.2.0.jar在類路徑中出現:

%HOME%.grails \常春藤緩存\ org.grails \的Grails,插件,異步\罐\

11

將Servlet版本從3.0更改爲2.5(反之亦然),並且此異常a ppeared。

我已經通過鍵入解決了這個問題:

grails clean 
grails clean-all 

的依賴已經再次得到應用開始運行。

0

如果清潔不起作用,請嘗試手動移除目標。

相關問題