java - jdk11 scala 2.12.8 兼容性
问题描述
我的 scala 2.12.8 项目在 jdk8 上运行良好,在解决了一些编译问题后,我设法用 jdk11 构建了 scala 2.12.8 项目。但是我得到了一个运行时类加载异常,如下所示
Exception in thread "main" java.lang.NoClassDefFoundError: play/api/http/JavaHttpFiltersDelegate$AjcClosure1
at java.base/java.lang.Class.getDeclaredConstructors0(Native Method)
at java.base/java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
at java.base/java.lang.Class.getDeclaredConstructors(Unknown Source)
at com.google.inject.spi.InjectionPoint.forConstructorOf(InjectionPoint.java:245)
at com.google.inject.internal.ConstructorBindingImpl.create(ConstructorBindingImpl.java:115)
at com.google.inject.internal.InjectorImpl.createUninitializedBinding(InjectorImpl.java:706)
at com.google.inject.internal.UntargettedBindingProcessor$1.visit(UntargettedBindingProcessor.java:54)
at com.google.inject.internal.UntargettedBindingProcessor$1.visit(UntargettedBindingProcessor.java:36)
at com.google.inject.internal.UntargettedBindingImpl.acceptTargetVisitor(UntargettedBindingImpl.java:49)
at com.google.inject.internal.UntargettedBindingProcessor.visit(UntargettedBindingProcessor.java:35)
at com.google.inject.internal.UntargettedBindingProcessor.visit(UntargettedBindingProcessor.java:27)
at com.google.inject.internal.BindingImpl.acceptVisitor(BindingImpl.java:99)
at com.google.inject.internal.AbstractProcessor.process(AbstractProcessor.java:54)
at com.google.inject.internal.InjectorShell$Builder.build(InjectorShell.java:186)
at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:103)
at com.google.inject.Guice.createInjector(Guice.java:87)
at com.google.inject.Guice.createInjector(Guice.java:78)
at play.api.inject.guice.GuiceBuilder.injector(GuiceInjectorBuilder.scala:185)
at play.api.inject.guice.GuiceApplicationBuilder.build(GuiceApplicationBuilder.scala:137)
at play.api.inject.guice.GuiceApplicationLoader.load(GuiceApplicationLoader.scala:21)
at play.core.server.ProdServerStart$.start(ProdServerStart.scala:51)
at play.core.server.ProdServerStart$.main(ProdServerStart.scala:25)
at play.core.server.ProdServerStart.main(ProdServerStart.scala)
Caused by: java.lang.ClassNotFoundException: play.api.http.JavaHttpFiltersDelegate$AjcClosure1
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source)
at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
... 23 more
根据 scala 网站https://docs.scala-lang.org/overviews/jdk-compatibility/overview.html
从 Scala 2.13.0、2.12.8 和 2.11.12 开始,JDK 11 支持不完整。值得注意的是,scalac 不会强制执行 Java 平台模块系统的限制,这意味着类型检查的代码可能会在运行时引发链接错误。
我不确定我得到的错误是否与 scala 网站提到的问题有关。如果不知道可能是什么原因?
解决方案
推荐阅读
- swift - Swift 4,如何从句子中删除两个第 n 个租船人,并从 1 而不是 0 开始计算句子中的每个字母
- javascript - 在 Firebase Web 中获取正确的孩子
- c# - 会话 Cookie 未覆盖
- excel - Excel VBA 从通过 application.inputbox 定义的范围返回单元格值
- javascript - 将拒绝从外部承诺传播到内部承诺
- python - Sublime 的远程 Python 环境
- python - 重新加载和缩放图像
- python - Python翻译模块在脚本中不起作用
- android - ButterKnife OnClick 侦听器在自定义视图中创建视图后不久运行
- jquery - 如何指定 web.xml 中不同路径的欢迎文件?