Play 1.2.x 中的 UnexpectedException ContinuationEnhancer 在 helpers.CheatSheetHelper$2 上出现了无效的常量类型:15。

7

使用 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个回答

14

Play 1.2.5版本使用的Javassist 3.9.0不完全支持由JDK 8编译器生成的字节码。因此,建议你使用JDK 7进行编译或者将play/lib/framework/目录下的Javassist库升级到3.18.0版本。


6

这可能与运行Play的JDK有关。如果你使用的是Java8 JDK,你可能想尝试使用Java7。对我来说,这个方法解决了问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接