Scala Akka 快速入门:Java 版本不匹配和编译错误

问题描述 投票:0回答:1

我对 Scala 和 Akka 比较陌生,是从 Java、Spring 和 REST API 背景过渡的。目前,我正在学习 Akka Actors Quickstart with Scala 教程。

在尝试按照提供的步骤运行 Scala 的 Hello World 示例时,我在执行

sbt reStart
时遇到了问题。错误信息如下:

akka-quickstart-scala[ERROR] Error: A JNI error has occurred, please check your installation and try again
akka-quickstart-scala[ERROR] Exception in thread "main" java.lang.UnsupportedClassVersionError: akka/actor/typed/ActorSystem has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0

经过研究,我找到了将JRE升级到版本11的建议,但由于限制,目前我无法这样做。尝试使用

scalac AkkaQuickstart.scala
在 Java 8 中编译代码会导致以下错误:

AkkaQuickstart.scala:5: error: not found: object akka
import http://akka.actor.typed.ActorRef

鉴于我是 Akka 和 Scala 的新手,并且无法升级 Java 版本,我正在寻求解决此版本不匹配和编译错误的指导。任何帮助将不胜感激。

提前致谢。

java scala java-8 concurrency akka
1个回答
0
投票

Akka 2.9 - 删除了对 Java 8 的支持

删除了对 Java 8 的支持

已发布的工件面向 Java 11 及更高版本。支持的 Java 版本为 11 和 17。

删除 jdk 8 支持的 PR 已合并

Akka 2.9 - 删除了对 Scala 2.12 的支持

删除了对 Scala 2.12 的支持

已发布的工件针对 Scala 2.13 和 Scala 3.3。

这意味着,如果您只能使用 jdk 8 运行您的项目,则您可以使用的最新版本的 akka 是 2.8.x。

我能够在本地运行以下虚拟 akka hello world

  • build.sbt
    
    
ThisBuild / scalaVersion := "2.13.12" lazy val root = (project in file(".")) .settings( name := "akka-dummy-hello-world", libraryDependencies ++= Seq( "com.typesafe.akka" %% "akka-actor-typed" % "2.8.5" ) )

  • Main.scala
    
    
import akka.actor.typed.ActorSystem import akka.actor.typed.scaladsl.Behaviors object Main { def main(args: Array[String]): Unit = { val empty = Behaviors.setup[Any] { _ => println("hello akka dummy") Behaviors.empty } val actorSystem = ActorSystem(empty, "akka-dummy-hello-world") actorSystem.terminate() } }
    
© www.soinside.com 2019 - 2024. All rights reserved.