当前位置: 首页 > 知识库问答 >
问题:

Scala与Java9-Java不兼容。lang.NoClassDefFoundError

佟云
2023-03-14

在我的pc上安装Java 9之后,只需运行一个示例Scala SBT项目,我就遇到了这个例外。我已经尝试了一些解决方案,但什么都没有找到。

Java9和Scala之间是否存在不兼容?

Scala版本:2.12。3.

Java版本:Java版本“9”

IDE: 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)

我试过了,但没有成功。

共有2个答案

钱劲
2023-03-14

我只是删除Java9,直到有人给我一些提示,编译工作正常。

长孙雅志
2023-03-14

尝试添加编译器选项来临时修复此问题:

--add-modules java.se.ee

因为JavaEE共享的模块在JDK9中默认不会解析。

您还可以跟踪这个问题,以便在scala开发库中支持JDK 9进行更新。

 类似资料:
  • 我只是试图释放我的Java9兼容的项目与。但是,它在中失败 无法执行目标组织。阿帕奇。专家插件:maven编译器插件:3.7.0:在项目电子邮件上编译(默认编译):致命错误编译:无效目标版本:9 有趣的是,在我独立运行时运行良好。我的设置: Maven版本3.5.0。 运行良好; 失败与上述异常。 调试输出:

  • 我正在使用生成cacerts。 然后我使用,但我会遇到这样的例外: 这是兼容性问题吗?使用一个版本的java生成的Cacert是否与另一个版本的java不兼容?

  • 问题内容: 我正在使用来自AJAX发布请求的回调来导航到新页面,但是在Internet Explorer上不起作用。我的代码如下: 这在FF / Safari / Chrome上正常运行,但是当我在IE上对其进行测试时,它不起作用。是否有更好的方法重定向到新页面?我正在使用,因为如果我不使用回调,则数据不会加载到Chrome / Safari上,因为在请求完成之前页面只会更改。 问题答案: 是括号

  • 我有一个关于JavaAPI中Akka 2.0.1的问题。我有以下情况: 参与者A:从UI接收请求。然后它将执行以下操作。 等待来自UI的消息 发送msg到Actor B,以检索数据 成为一个演员,当从演员B那里得到答案时,处理它。 演员B: 等待演员A的消息 检索数据 调用; 这不起作用,演员甲也不会得到答案。然而,如果Actor B在系统中使用全局actorRef到Actor A,在我的情况下z

  • 运行以下代码段(在Eclipse中设置了JDK7): 以下异常的结果: java.lang.UnsupportedClassVersionError:org/testfx/framework/junit/applicationtest:不支持major.minor版本52.0在java.lang.ClassLoader.DefineClass1(本机方法)在java.lang.ClassLoade

  • 问题内容: Websphere v8.5.5开箱即用地支持JPA 2.0 。 我正在尝试将WAR部署到Websphere v8.5.5应用程序服务器。我的persistence.xml指定为JPA提供程序。 我还设置了JPA属性: 如本PDF演示文稿和本IBM主题中所述 我的应用程序设置为“ Parent Last”类加载策略,并且在WEB-INF / lib目录中包含以下JAR: hiberna