在helpers上播放1.2.x UnexpectedException ContinuationEnhancer.CheatSheetHelper $ 2无效常量类型:15

时间:2013-12-08 13:07:03

标签: playframework playframework-1.x javassist

Play framework 1.2.x以以下错误开头:

Oops: UnexpectedException
An unexpected error occured caused by exception UnexpectedException: While applying class play.classloading.enhancers.ContinuationEnhancer on helpers.CheatSheetHelper$2

play.exceptions.UnexpectedException: While applying play.CorePlugin@3444d69d on helpers.CheatSheetHelper$2
    at play.plugins.PluginCollection.enhance(PluginCollection.java:556)
    at play.classloading.ApplicationClasses$ApplicationClass.enhance(ApplicationClasses.java:235)
    at play.classloading.ApplicationClassloader.loadApplicationClass(ApplicationClassloader.java:167)
    at play.classloading.ApplicationClassloader.getAllClasses(ApplicationClassloader.java:431)
    at play.Play.preCompile(Play.java:600)
    at play.Play.init(Play.java:304)
    at play.server.Server.main(Server.java:162)
Caused by: play.exceptions.UnexpectedException: While applying class play.classloading.enhancers.ContinuationEnhancer on helpers.CheatSheetHelper$2
    at play.CorePlugin.enhance(CorePlugin.java:302)
    at play.plugins.PluginCollection.enhance(PluginCollection.java:551)
    ... 6 more
Caused by: java.lang.RuntimeException: java.io.IOException: invalid constant type: 15
    at javassist.CtClassType.getClassFile2(CtClassType.java:203)
    at javassist.CtClassType.subtypeOf(CtClassType.java:303)
    at javassist.CtClassType.subtypeOf(CtClassType.java:318)
    at play.classloading.enhancers.ContinuationEnhancer.enhanceThisClass(ContinuationEnhancer.java:49)
    at play.CorePlugin.enhance(CorePlugin.java:297)
    ... 7 more
Caused by: java.io.IOException: invalid constant type: 15
    at javassist.bytecode.ConstPool.readOne(ConstPool.java:1027)
    at javassist.bytecode.ConstPool.read(ConstPool.java:970)
    at javassist.bytecode.ConstPool.<init>(ConstPool.java:127)
    at javassist.bytecode.ClassFile.read(ClassFile.java:693)
    at javassist.bytecode.ClassFile.<init>(ClassFile.java:85)
    at javassist.CtClassType.getClassFile2(CtClassType.java:190)
    ... 11 more

2 个答案:

答案 0 :(得分:14)

Play 1.2.5附带了Javassist 3.9.0,它不能完全理解JDK 8编译器生成的字节码。例如,使用JDK 7编译或将play / lib / framework /下的Javassist库升级到Javassist 3.18.0。

答案 1 :(得分:5)

这可能与用于运行游戏的jdk有关。如果你使用java8 jdk,你可能想尝试java7。这解决了我的问题。