使用 Java 和元模型 java.lang.ClassCastException 时出现异常:javassist.bytecode.InterfaceMethodrefInfo 不能
exception when working with Java and metamodels java.lang.ClassCastException: javassist.bytecode.InterfaceMethodrefInfo cannot
我无法 运行 我的 Play java 应用程序 我做的最后一件事是修改元模型和实体关系的一些小改动 类,有没有人以前遇到过这个问题吗?
我不太明白,因为这个问题没有说明我的代码,有什么建议吗?
java.lang.ClassCastException: javassist.bytecode.InterfaceMethodrefInfo 无法转换为 javassist.bytecode.MethodrefInfo
在 javassist.bytecode.ConstPool.getMethodrefType(ConstPool.java:452)
在 javassist.bytecode.stackmap.Tracer.doInvokeMethod(Tracer.java:800)
在 javassist.bytecode.stackmap.Tracer.doOpcode148_201(Tracer.java:597)
在 javassist.bytecode.stackmap.Tracer.doOpcode(Tracer.java:81)
在 javassist.bytecode.stackmap.MapMaker.make(MapMaker.java:187)
在 javassist.bytecode.stackmap.MapMaker.make(MapMaker.java:199)
在 javassist.bytecode.stackmap.MapMaker.make(MapMaker.java:199)
在 javassist.bytecode.stackmap.MapMaker.make(MapMaker.java:199)
在 javassist.bytecode.stackmap.MapMaker.make(MapMaker.java:199)
在 javassist.bytecode.stackmap.MapMaker.make(MapMaker.java:199)
在 javassist.bytecode.stackmap.MapMaker.make(MapMaker.java:199)
在 javassist.bytecode.stackmap.MapMaker.make(MapMaker.java:199)
在 javassist.bytecode.stackmap.MapMaker.make(MapMaker.java:199)
在 javassist.bytecode.stackmap.MapMaker.make(MapMaker.java:199)
在 javassist.bytecode.stackmap.MapMaker.make(MapMaker.java:199)
在 javassist.bytecode.stackmap.MapMaker.make(MapMaker.java:199)
在 javassist.bytecode.stackmap.MapMaker.make(MapMaker.java:199)
在 javassist.bytecode.stackmap.MapMaker.make(MapMaker.java:199)
在 javassist.bytecode.stackmap.MapMaker.make(MapMaker.java:199)
在 javassist.bytecode.stackmap.MapMaker.make(MapMaker.java:199)
在 javassist.bytecode.stackmap.MapMaker.make(MapMaker.java:199)
在 javassist.bytecode.stackmap.MapMaker.make(MapMaker.java:199)
在 javassist.bytecode.stackmap.MapMaker.make(MapMaker.java:199)
在 javassist.bytecode.stackmap.MapMaker.make(MapMaker.java:164)
在 javassist.bytecode.stackmap.MapMaker.make(MapMaker.java:108)
在 javassist.bytecode.MethodInfo.rebuildStackMap(MethodInfo.java:423)
在 javassist.bytecode.MethodInfo.rebuildStackMapIf6(MethodInfo.java:405)
在 javassist.expr.ExprEditor.doit(ExprEditor.java:113)
在 javassist.CtBehavior.instrument(CtBehavior.java:712)
在 play.core.enhancers.PropertiesEnhancer.rewriteAccess(PropertiesEnhancer.java:156)
在 play.PlayCommands$$anonfun$PostCompile$1$$anonfun$9.apply(PlayCommands.scala:99)
在 play.PlayCommands$$anonfun$PostCompile$1$$anonfun$9.apply(PlayCommands.scala:99)
在 scala.collection.TraversableLike$$anonfun$filter$1.apply(TraversableLike.scala:264)
在 scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
在 scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
在 scala.collection.TraversableLike$class.filter(TraversableLike.scala:263)
在 scala.collection.AbstractTraversable.filter(Traversable.scala:105)
在 play.PlayCommands$$anonfun$PostCompile$1.apply(PlayCommands.scala:99)
在 play.PlayCommands$$anonfun$PostCompile$1.apply(PlayCommands.scala:76)
在 scala.Function8$$anonfun$tupled$1.apply(Function8.scala:35)
在 scala.Function8$$anonfun$tupled$1.apply(Function8.scala:34)
在 scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
在 sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:42)
在 sbt.std.Transform$$anon$4.work(System.scala:64)
在sbt.Execute$$anonfun$提交$1$$anonfun$申请$1.apply(Execute.scala:237)
在sbt.Execute$$anonfun$提交$1$$anonfun$申请$1.apply(Execute.scala:237)
在 sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:18)
在 sbt.Execute.work(Execute.scala:244)
在 sbt.Execute$$anonfun$submit$1.apply(Execute.scala:237)
在 sbt.Execute$$anonfun$submit$1.apply(Execute.scala:237)
在 sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:160)
在 sbt.CompletionService$$anon$2.call(CompletionService.scala:30)
在 java.util.concurrent.FutureTask.run(FutureTask.java:266)
在 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
在 java.util.concurrent.FutureTask.run(FutureTask.java:266)
在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
在 java.lang.Thread.run(Thread.java:745)
代码:
@OneToMany(mappedBy = "user")
public 列表替换;
@OneToMany(mappedBy = "user")
public List<Employee> employee;
public static volatile ListAttribute<User, Substitute> substitute;
public static volatile ListAttribute<User, Employee> employee;
listAttribute 以前是单数的,但是我从一对一关系变成一对多关系后需要改变它们
使用 Javaassist 版本 3.18.0-GA 的 sbt-play-enhancer 插件会发生这种情况。
参考:https://github.com/playframework/playframework/issues/3374
将 3.20 javassist 升级添加到 project/plugins.sbt
libraryDependencies += "org.javassist" % "javassist" % "3.20.0-GA"
我无法 运行 我的 Play java 应用程序 我做的最后一件事是修改元模型和实体关系的一些小改动 类,有没有人以前遇到过这个问题吗?
我不太明白,因为这个问题没有说明我的代码,有什么建议吗?
java.lang.ClassCastException: javassist.bytecode.InterfaceMethodrefInfo 无法转换为 javassist.bytecode.MethodrefInfo 在 javassist.bytecode.ConstPool.getMethodrefType(ConstPool.java:452) 在 javassist.bytecode.stackmap.Tracer.doInvokeMethod(Tracer.java:800) 在 javassist.bytecode.stackmap.Tracer.doOpcode148_201(Tracer.java:597) 在 javassist.bytecode.stackmap.Tracer.doOpcode(Tracer.java:81) 在 javassist.bytecode.stackmap.MapMaker.make(MapMaker.java:187) 在 javassist.bytecode.stackmap.MapMaker.make(MapMaker.java:199) 在 javassist.bytecode.stackmap.MapMaker.make(MapMaker.java:199) 在 javassist.bytecode.stackmap.MapMaker.make(MapMaker.java:199) 在 javassist.bytecode.stackmap.MapMaker.make(MapMaker.java:199) 在 javassist.bytecode.stackmap.MapMaker.make(MapMaker.java:199) 在 javassist.bytecode.stackmap.MapMaker.make(MapMaker.java:199) 在 javassist.bytecode.stackmap.MapMaker.make(MapMaker.java:199) 在 javassist.bytecode.stackmap.MapMaker.make(MapMaker.java:199) 在 javassist.bytecode.stackmap.MapMaker.make(MapMaker.java:199) 在 javassist.bytecode.stackmap.MapMaker.make(MapMaker.java:199) 在 javassist.bytecode.stackmap.MapMaker.make(MapMaker.java:199) 在 javassist.bytecode.stackmap.MapMaker.make(MapMaker.java:199) 在 javassist.bytecode.stackmap.MapMaker.make(MapMaker.java:199) 在 javassist.bytecode.stackmap.MapMaker.make(MapMaker.java:199) 在 javassist.bytecode.stackmap.MapMaker.make(MapMaker.java:199) 在 javassist.bytecode.stackmap.MapMaker.make(MapMaker.java:199) 在 javassist.bytecode.stackmap.MapMaker.make(MapMaker.java:199) 在 javassist.bytecode.stackmap.MapMaker.make(MapMaker.java:199) 在 javassist.bytecode.stackmap.MapMaker.make(MapMaker.java:164) 在 javassist.bytecode.stackmap.MapMaker.make(MapMaker.java:108) 在 javassist.bytecode.MethodInfo.rebuildStackMap(MethodInfo.java:423) 在 javassist.bytecode.MethodInfo.rebuildStackMapIf6(MethodInfo.java:405) 在 javassist.expr.ExprEditor.doit(ExprEditor.java:113) 在 javassist.CtBehavior.instrument(CtBehavior.java:712) 在 play.core.enhancers.PropertiesEnhancer.rewriteAccess(PropertiesEnhancer.java:156) 在 play.PlayCommands$$anonfun$PostCompile$1$$anonfun$9.apply(PlayCommands.scala:99) 在 play.PlayCommands$$anonfun$PostCompile$1$$anonfun$9.apply(PlayCommands.scala:99) 在 scala.collection.TraversableLike$$anonfun$filter$1.apply(TraversableLike.scala:264) 在 scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59) 在 scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47) 在 scala.collection.TraversableLike$class.filter(TraversableLike.scala:263) 在 scala.collection.AbstractTraversable.filter(Traversable.scala:105) 在 play.PlayCommands$$anonfun$PostCompile$1.apply(PlayCommands.scala:99) 在 play.PlayCommands$$anonfun$PostCompile$1.apply(PlayCommands.scala:76) 在 scala.Function8$$anonfun$tupled$1.apply(Function8.scala:35) 在 scala.Function8$$anonfun$tupled$1.apply(Function8.scala:34) 在 scala.Function1$$anonfun$compose$1.apply(Function1.scala:47) 在 sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:42) 在 sbt.std.Transform$$anon$4.work(System.scala:64) 在sbt.Execute$$anonfun$提交$1$$anonfun$申请$1.apply(Execute.scala:237) 在sbt.Execute$$anonfun$提交$1$$anonfun$申请$1.apply(Execute.scala:237) 在 sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:18) 在 sbt.Execute.work(Execute.scala:244) 在 sbt.Execute$$anonfun$submit$1.apply(Execute.scala:237) 在 sbt.Execute$$anonfun$submit$1.apply(Execute.scala:237) 在 sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:160) 在 sbt.CompletionService$$anon$2.call(CompletionService.scala:30) 在 java.util.concurrent.FutureTask.run(FutureTask.java:266) 在 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 在 java.util.concurrent.FutureTask.run(FutureTask.java:266) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 在 java.lang.Thread.run(Thread.java:745)
代码:
@OneToMany(mappedBy = "user") public 列表替换;
@OneToMany(mappedBy = "user")
public List<Employee> employee;
public static volatile ListAttribute<User, Substitute> substitute;
public static volatile ListAttribute<User, Employee> employee;
listAttribute 以前是单数的,但是我从一对一关系变成一对多关系后需要改变它们
使用 Javaassist 版本 3.18.0-GA 的 sbt-play-enhancer 插件会发生这种情况。
参考:https://github.com/playframework/playframework/issues/3374
将 3.20 javassist 升级添加到 project/plugins.sbt
libraryDependencies += "org.javassist" % "javassist" % "3.20.0-GA"