0

私はscalaにかなり慣れていません。マルチモジュール プロジェクトを Scala 2.13 にアップグレードしているclass not foundときに、実行時に例外をスローする Scala 2.12 でコンパイルされたこの依存関係を見つけました。

java.lang.NoClassDefFoundError: scala/collection/mutable/ArrayOps$ofRef

このクラスは 2.13 で削除されました。2.12までしか利用できません。この依存関係のみをコンパイルするように v2.12 を強制する方法を探しています。

クロスビルドを使用しようとしましたが、依存関係の URL が以下を使用して構築されているため、コア ライブラリでは機能しません。

"org.scala-lang" % "scala-library" % scalaVersion.value

のように見える

https://repo1.maven.org/maven2/org/scala-lang/scala-library_2.12.15/2.12.15/scala-library_2.12.15-2.12.15.pom

また、クロスビルドは、互換性のある依存バージョンを持つさまざまな scala バージョンのサブモジュールをコンパイルできるようにする方法のようであり、個々の依存関係に scala バージョンを適用するためのものではありません。

編集1: これはビルド定義です:

   root
    |
    main
    |---dependency w/o 2.13 build
    |
    acceptanceTests
    |---dependency w/o 2.13 build
    |
    (other modules)

依存関係は内部コモンズ ライブラリです。これは、コンパイル時にクラスscala/collection/mutable/ArrayOpsを使用します。scala-lang -> scala-libraryから。

私の質問:

  1. これを行うことさえ可能ですか?または、ここで述べたように 2.12 にダウングレードする唯一のオプションです
  2. 「コア」ライブラリが次のような外部ライブラリの URL パターンに従わないのはなぜですか [organisation]/[module](_[scalaVersion])(_[sbtVersion])/[revision]。`代わりに、次のように見えますhttps://repo1.maven.org/maven2/org/scala-lang/scala-library/2.12.15/scala-library-2.12.15.pom
4

1 に答える 1