有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Play Framework中的“groovy.lang.MissingFieldException:没有这样的字段:类的元类:java.lang.class”错误

我们正在ubuntu CI服务器Java7上运行Play1.2.4(mbknor-3版本)

今天,由于没有明显的原因,我们开始在所有分支上出现这些错误,即使是那些没有提交代码并且以前的构建已经成功完成的分支

当我执行play start然后执行curl localhost:9000时会发生错误。我已尝试运行play cleanplay deps --sync,并重新启动服务器,还验证了服务器没有耗尽硬盘空间

你知道这是什么原因吗?如何调试它

2012-06-11 08:47:51,255 INFO  (play) ~ Starting /home/ubuntu/programs/teamcity/buildAgent/work/a9561c50f06f33d5/portal/src
2012-06-11 08:47:51,259 INFO  (play) ~ Module less is available (/home/ubuntu/programs/teamcity/buildAgent/work/a9561c50f06f33d5/portal/src/modules/less-0.9)
2012-06-11 08:47:51,260 INFO  (play) ~ Module secure is available (/home/ubuntu/programs/play/play-1.2.4-mbknor-3/modules/secure)
2012-06-11 08:47:51,261 INFO  (play) ~ Module crud is available (/home/ubuntu/programs/play/play-1.2.4-mbknor-3/modules/crud)
2012-06-11 08:47:53,608 DEBUG (com.asual.lesscss.LessEngine) ~ Initializing LESS Engine.
2012-06-11 08:47:53,945 DEBUG (com.asual.lesscss.LessEngine) ~ Using implementation version: Rhino 1.7 release 3 2011 07 19
2012-06-11 08:47:55,396 WARN  (play) ~ You're running Play! in DEV mode
2012-06-11 08:47:55,716 INFO  (play) ~ Listening for HTTP on port 9000 (Waiting a first request to start) ...
2012-06-11 08:48:04,566 ERROR (play) ~

@6ajlb3agi
Internal Server Error (500) for request GET /

Oops: ExceptionInInitializerError
An unexpected error occured caused by exception ExceptionInInitializerError: null

play.exceptions.UnexpectedException: Unexpected Error
        at play.Invoker$Invocation.onException(Invoker.java:244)
        at play.Invoker$Invocation.run(Invoker.java:286)
        at Invocation.HTTP Request(Play!)
Caused by: java.lang.ExceptionInInitializerError
        at play.templates.TemplateLoader.load(TemplateLoader.java:78)
        at play.mvc.Router.parse(Router.java:162)
        at play.mvc.Router.parse(Router.java:190)
        at play.mvc.Router.parse(Router.java:164)
        at play.mvc.Router.load(Router.java:48)
        at play.mvc.Router.detectChanges(Router.java:219)
        ... 1 more
Caused by: groovy.lang.MissingFieldException: No such field: metaClass for class: java.lang.Class
        at groovy.lang.MetaClassImpl.getAttribute(MetaClassImpl.java:1074)
        at groovy.lang.MetaClassImpl.getStaticProperty(MetaClassImpl.java:1308)
        at groovy.lang.MetaClassImpl.getProperty(MetaClassImpl.java:707)
        at org.codehaus.groovy.runtime.Invoker.getProperty(Invoker.java:727)
        at org.codehaus.groovy.runtime.InvokerHelper.getProperty(InvokerHelper.java:206)
        at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.getProperty(ScriptBytecodeAdapter.java:295)
        at Script1.run(Script1.groovy:1)
        at groovy.lang.GroovyShell.evaluate(GroovyShell.java:521)
        at groovy.lang.GroovyShell.evaluate(GroovyShell.java:496)
        at play.templates.GroovyTemplate.<clinit>(GroovyTemplate.java:62)
        ... 7 more
2012-06-11 08:48:04,569 ERROR (play) ~ Error during the 500 response generation
java.lang.NoClassDefFoundError: Could not initialize class play.templates.GroovyTemplate
        at play.templates.TemplateLoader.load(TemplateLoader.java:78)
        at play.templates.TemplateLoader.load(TemplateLoader.java:172)
        at play.server.PlayHandler.serve500(PlayHandler.java:778)
        at play.server.PlayHandler$NettyInvocation.run(PlayHandler.java:237)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
        at java.util.concurrent.FutureTask.run(FutureTask.java:166)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
        at java.lang.Thread.run(Thread.java:722)

共 (1) 个答案

  1. # 1 楼答案

    这是一个奇怪的问题,但我有一个解决办法

    问题似乎是由与- groovy -> groovy-all-1.0-jsr 05依赖项的jar冲突引起的

    1. 很久以前,为了从我的项目中运行groovy脚本,我在我的项目中添加了这个依赖项
    2. 从那时起,我的项目似乎不再需要这种依赖关系
    3. 事实上,我的项目构建在相当长的一段时间内一直忽略了这种依赖性:

    :: problems summary :: :::: WARNINGS ::::::::::::::::::::::::::::::::::::::::::::::

      ::          UNRESOLVED DEPENDENCIES         ::
    
      ::::::::::::::::::::::::::::::::::::::::::::::
    
      :: groovy#groovy-all-1.0-jsr;05: java.text.ParseException:
    

    inconsistent module descriptor file found in 'http://repo1.maven.org/maven2/groovy/groovy-all-1.0-jsr/05/groovy-all-1.0-jsr-05.pom': bad module name: expected='groovy-all-1.0-jsr' found='groovy-all'; bad revision: expected='05' found='1.0-jsr-05';

      ::::::::::::::::::::::::::::::::::::::::::::::
    

    :::: ERRORS mavenCentral: bad module name found in http://repo1.maven.org/maven2/groovy/groovy-all-1.0-jsr/05/groovy-all-1.0-jsr-05.pom: expected='groovy-all-1.0-jsr found='groovy-all'

      mavenCentral: bad revision found in
    

    http://repo1.maven.org/maven2/groovy/groovy-all-1.0-jsr/05/groovy-all-1.0-jsr-05.pom: expected='05 found='1.0-jsr-05'

    1. 昨天,由于某些巫毒的原因,在我们的CI机器上(没有其他机器),这个依赖开始正确解析,获取这个文件,并导致类加载问题。这相当令人不安,因为我仍然不知道发生了什么变化,我有点担心这可能会发生在我们的生产机器上

    解决方案是摆脱这种依赖