Вопрос или проблема
Я разрабатываю проект на Akka HTTP с использованием Scala 3 и SBT.
Приложение работало нормально до того, как я добавил новые зависимости ниже в build.sbt
.
Новые добавленные зависимости: akka-http-circe
, akka-http-json4s
, authentikat-jwt
, json4s-native
, circe-generic
, slf4j-simple
.
Сразу после добавления новых зависимостей в build.sbt
я начал получать ошибки:
Уведомление: Неразрешенные зависимости:
не найдено: C:\Users\hp\.ivy2\localde.heikoseeberger\akka-http-circe_2.13\1.27.0\ivys\ivy.xml
не найдено: https://repo1.maven.org/maven2/de/heikoseeberger/akka-http-circe_2.13/1.27.0/akka-http-circe_2.13-1.27.0.pom
не найдено: https://repo.akka.io/maven/de/heikoseeberger/akka-http-circe_2.13/1.27.0/akka-http-circe_2.13-1.27.0.pom
Ошибка при загрузке de.heikoseeberger:akka-http-circe_2.13:1.27.0
“
Похожая ошибка возникает и с другими новыми зависимостями, которые я добавил в build.sbt
.
Я думал, что это проблема совместимости scala3, поэтому я добавил .cross(CrossVersion.for3Use2_13)
к каждой новой зависимости.
Но проблема сохранялась.
В чем может быть дело?
Заранее спасибо!
Новые добавленные зависимости:
("com.typesafe.scala-logging" %% "scala-logging" % "3.9.0").cross(CrossVersion.for3Use2_13),
("de.heikoseeberger" %% "akka-http-circe" % "1.27.0").cross(CrossVersion.for3Use2_13),
("de.heikoseeberger" %% "akka-http-json4s" % "1.22.0").cross(CrossVersion.for3Use2_13),
("com.jason-goodwin" %% "authentikat-jwt" % "0.4.5").cross(CrossVersion.for3Use2_13),
("org.json4s" %% "json4s-native" % "3.6.1").cross(CrossVersion.for3Use2_13),
("io.circe" %% "circe-generic" % "0.11.1").cross(CrossVersion.for3Use2_13),
("org.slf4j" %% "slf4j-simple" % "1.7.25").cross(CrossVersion.for3Use2_13),
build.sbt:
lazy val akkaHttpVersion = "10.6.3"
lazy val akkaVersion = "2.9.4"
resolvers += "Репозиторий библиотек Akka".at("https://repo.akka.io/maven")
fork := true
lazy val root = (project in file(".")).
settings(
inThisBuild(List(
organization := "com.example",
scalaVersion := "3.3.3"
)),
name := "eskimi-bidding-agent",
libraryDependencies ++= Seq(
"com.typesafe.akka" %% "akka-http" % akkaHttpVersion,
"com.typesafe.akka" %% "akka-http-spray-json" % akkaHttpVersion,
"com.typesafe.akka" %% "akka-actor-typed" % akkaVersion,
"com.typesafe.akka" %% "akka-stream" % akkaVersion,
"com.typesafe.akka" %% "akka-pki" % akkaVersion,
("com.typesafe.scala-logging" %% "scala-logging" % "3.9.0").cross(CrossVersion.for3Use2_13),
("de.heikoseeberger" %% "akka-http-circe" % "1.27.0").cross(CrossVersion.for3Use2_13),
("de.heikoseeberger" %% "akka-http-json4s" % "1.22.0").cross(CrossVersion.for3Use2_13),
("com.jason-goodwin" %% "authentikat-jwt" % "0.4.5").cross(CrossVersion.for3Use2_13),
("org.json4s" %% "json4s-native" % "3.6.1").cross(CrossVersion.for3Use2_13),
("io.circe" %% "circe-generic" % "0.11.1").cross(CrossVersion.for3Use2_13),
("org.slf4j" %% "slf4j-simple" % "1.7.25").cross(CrossVersion.for3Use2_13),
"ch.qos.logback" % "logback-classic" % "1.2.11",
"com.typesafe.akka" %% "akka-http-testkit" % akkaHttpVersion % Test,
"com.typesafe.akka" %% "akka-actor-testkit-typed" % akkaVersion % Test,
"org.scalatest" %% "scalatest" % "3.2.12" % Test
)
)
Ответ или решение
Проблема, которую вы описали, связана с использованием неверной версии библиотек и несовместимостью с Scala 3. Давайте рассмотрим шаги, которые помогут вам устранить проблему с неопределёнными зависимостями.
-
Версии библиотек: Убедитесь, что версии библиотек, которые вы используете, совместимы с Scala 3. Например, библиотеки, такие как
akka-http-circe
иakka-http-json4s
, на момент написания не имели версий, подходящих для Scala 3. Чтобы помочь вам с этой проблемой, проверьте последнюю документацию на GitHub или страницу проекта, чтобы узнать, есть ли обновления, которые поддерживают Scala 3. -
Использование правильных версий: Код, который вы добавили, использует актуальные версии библиотек для Scala 2.13. Если ваши проекты требуют поддержки Scala 3, вам нужно использовать подходящие версии библиотек. Например, ищите версии, которые обозначены как
-scala3
в имени, или проверьте, если существует версия, обеспечивающая поддержку Scala 3. -
Очистка кеша Ivy/SBT: Иногда SBT кэширует зависимости, что может вызвать проблемы. Попробуйте очистить кеш командой:
sbt clean
Затем удалите локальный кеш Ivy:
rm -rf ~/.ivy2/cache rm -rf ~/.ivy2/local
-
Проверка репозиториев: Убедитесь, что у вас добавлены все необходимые репозитории в
build.sbt
. Например, вы можете добавитьMaven Central
или другие репозитории, если необходимо:resolvers += "Maven Central" at "https://repo1.maven.org/maven2/"
-
Корректировка
build.sbt
: Вот пример исправленной конфигурации с более новыми версиями, которые могут поддерживать Scala 3:
lazy val root = (project in file("."))
.settings(
inThisBuild(List(
organization := "com.example",
scalaVersion := "3.3.3"
)),
name := "eskimi-bidding-agent",
libraryDependencies ++= Seq(
"com.typesafe.akka" %% "akka-http" % akkaHttpVersion,
"com.typesafe.akka" %% "akka-http-spray-json" % akkaHttpVersion,
"com.typesafe.akka" %% "akka-actor-typed" % akkaVersion,
"com.typesafe.akka" %% "akka-stream" % akkaVersion,
"com.typesafe.akka" %% "akka-pki" % akkaVersion,
"com.typesafe.scala-logging" %% "scala-logging" % "3.9.4",
"de.heikoseeberger" %% "akka-http-circe" % "1.37.0", // Проверьте актуальную версию
"de.heikoseeberger" %% "akka-http-json4s" % "1.38.0", // Проверьте актуальную версию
"com.jason-goodwin" %% "authentikat-jwt" % "0.4.5",
"org.json4s" %% "json4s-native" % "3.6.11",
"io.circe" %% "circe-generic" % "0.14.1",
"org.slf4j" % "slf4j-simple" % "1.7.30",
"ch.qos.logback" % "logback-classic" % "1.2.3",
"com.typesafe.akka" %% "akka-http-testkit" % akkaHttpVersion % Test,
"com.typesafe.akka" %% "akka-actor-testkit-typed" % akkaVersion % Test,
"org.scalatest" %% "scalatest" % "3.2.3" % Test
)
)
- Итоговое действие: После внесения изменений выполните команду
sbt update
, чтобы SBT попытался загрузить ваши зависимости заново. Если проблема сохраняется, проверьте версии библиотек, используемых в вашем проекте, и убедитесь, что они поддерживают вашу версию Scala.
Если вы следовали всем этим шагам и всё равно сталкиваетесь с проблемами, рассмотрите возможность поиска на форумах, таких как StackOverflow, или на GitHub, поскольку эти ресурсы могут содержать актуальную информацию о возможных проблемах с конкретными версиями библиотек.