java - Scala 与 Java 9 不兼容 - java.lang.NoClassDefFoundError

标签 java scala sbt java-9

在我的电脑上安装 Java 9 后,只需运行一个示例 Scala SBT 项目,我就遇到了这个异常。 我已经尝试了一些我找到的解决方案,但一无所获。

Java 9 和 Scala 之间是否存在不兼容问题?

Scala 版本:2.12.3

Java 版本:java 版本“9”

集成开发环境:IntelliJ

提前致谢。

info] Compiling 7 Scala sources and 1 Java source to /Users/ermis/Projects/begining-scala/target/scala-2.12/classes...
[info] p.a.h.EnabledFilters - Enabled Filters (see <https://www.playframework.com/documentation/latest/Filters>):

play.filters.csrf.CSRFFilter
play.filters.headers.SecurityHeadersFilter
play.filters.hosts.AllowedHostsFilter

[info] play.api.Play - Application started (Dev)
Uncaught error from thread [play-dev-mode-akka.actor.default-
dispatcher-2]: javax/xml/bind/DatatypeConverter, shutting down JVM since 'akka.jvm-exit-on-fatal-error' is enabled for for ActorSystem[play-dev-mode]
java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter
    at io.jsonwebtoken.impl.Base64Codec.decode(Base64Codec.java:26)
    at io.jsonwebtoken.impl.DefaultJwtBuilder.signWith(DefaultJwtBuilder.java:106)
    at play.api.mvc.JWTCookieDataCodec$JWTFormatter.format(Cookie.scala:710)
    at play.api.mvc.JWTCookieDataCodec.encode(Cookie.scala:569)
    at play.api.mvc.JWTCookieDataCodec.encode$(Cookie.scala:567)
    at play.api.mvc.DefaultJWTCookieDataCodec.encode(Cookie.scala:760)
    at play.api.mvc.FallbackCookieDataCodec.encode(Cookie.scala:734)
    at play.api.mvc.FallbackCookieDataCodec.encode$(Cookie.scala:733)
    at play.api.mvc.DefaultSessionCookieBaker.encode(Session.scala:95)
    at play.api.mvc.CookieBaker.encodeAsCookie(Cookie.scala:414)
    at play.api.mvc.CookieBaker.encodeAsCookie$(Cookie.scala:413)
    at play.api.mvc.DefaultSessionCookieBaker.encodeAsCookie(Session.scala:95)
    at play.api.mvc.Result.$anonfun$bakeCookies$2(Results.scala:281)
    at scala.Option.map(Option.scala:146)
    at play.api.mvc.Result.bakeCookies(Results.scala:280)
    at play.core.server.common.ServerResultUtils.prepareCookies(ServerResultUtils.scala:227)
    at play.core.server.AkkaHttpServer.$anonfun$executeAction$3(AkkaHttpServer.scala:302)
    at akka.http.scaladsl.util.FastFuture$.strictTransform$1(FastFuture.scala:41)
    at akka.http.scaladsl.util.FastFuture$.transformWith$extension1(FastFuture.scala:55)
    at akka.http.scaladsl.util.FastFuture$.flatMap$extension(FastFuture.scala:26)
    at play.core.server.AkkaHttpServer.executeAction(AkkaHttpServer.scala:301)
    at play.core.server.AkkaHttpServer.executeHandler(AkkaHttpServer.scala:254)

我试过了,但没用。

--添加模块 java.xml.bind 要么 --add-modules java.se.ee enter image description here

最佳答案

尝试添加一个编译器选项来临时解决这个问题:

--add-modules java.se.ee

Module shared by Java EE would not be resolved by default in JDK9.

您也可以将问题跟踪到 Support JDK 9 也在 scala-dev 存储库中进行更新。

关于java - Scala 与 Java 9 不兼容 - java.lang.NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46516047/

相关文章:

具有发布者和订阅者特征的 Scala 类

java - ProcessBuilder 不输出任何内容

scala - Spark 独立: how to avoid sbt assembly and uber-jar?

string - 检查列表中的值是否是字符串的一部分

scala - 如何拥有具有多个 Scala 版本的 SBT 子项目?

java - 如何添加用户库作为播放框架的依赖项?

scala - 有没有一种简单的方法可以用 Dotty 编译一个 sbt 项目?

java - weld-osgi、pax-cdi 和fighterfish 之间有什么区别

java - 在 Imagej 插件中,如何使 ROI 可用或作为选择 Activity

java - 如何在java中模拟类而不创建接口(interface)