View repository at this specific commit here
我正在组建一个小型SBT项目并学习如何使用akka演员。我能够得到一个只使用akka的简单示例,但是一旦我使用外部库,就会停止工作。我用这个
获得了一个非常大的堆栈跟踪QtCharts::QChartView
我的依赖关系看起来像这样:
>virtualenv
ImportError: No module named 'virtualenv'
>pip uninstall virtualenv
PermissionError: [Errno 13] Permission denied:
>sudo pip uninstall virtualenv
Successfully uninstalled virtualenv-15.1.0
>pip install virtualenv
Collecting virtualenv
>virtualenv
Options:
我使用this library也使用了akka版本// here I set domain name as domain2
所以给出了什么?这个相互矛盾的akka演员来自哪里?这是我的objc[15196]: Class JavaLaunchHelper is implemented in both
/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/bin/java (0x10cc6c4c0) and /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/libinstrument.dylib (0x10ccf84e0). One of the two will be used. Which one is undefined.
Detected java.lang.NoSuchMethodError error, which MAY be caused by incompatible Akka versions on the classpath. Please note that a given Akka version MUST be the same across all modules of Akka that you are using, e.g. if you use akka-actor [2.5.8 (resolved from current classpath)] all other core Akka modules MUST be of the same version. External projects like Alpakka, Persistence plugins or Akka HTTP etc. have their own version numbers - please make sure you're using a compatible set of libraries.
Uncaught error from thread [HelloSystem-akka.actor.default-dispatcher-4]: akka.actor.ActorCell.addFunctionRef(Lscala/Function2;)Lakka/actor/FunctionRef;, shutting down JVM since 'akka.jvm-exit-on-fatal-error' is enabled for for ActorSystem[HelloSystem]
java.lang.NoSuchMethodError: akka.actor.ActorCell.addFunctionRef(Lscala/Function2;)Lakka/actor/FunctionRef;
,其中包括我尝试使用的冲突管理器:
object v {
val akka = "2.5.8"
val scrape = "0.4.0"
}
val akka = Seq(
"com.typesafe.akka" %% "akka-actor" % v.akka,
"com.typesafe.akka" %% "akka-slf4j" % v.akka
)
val scrape = Seq(
"io.bfil" %% "scalescrape" % v.scrape
)
lazy val allDeps = akka ++ scrape
编辑:从main添加代码。
5.8
答案 0 :(得分:2)
根据Akka HTTP 10.0.x的兼容性指南(scalescrape 0.4.0依赖于Akka HTTP 10.0.1):
Akka HTTP 10.0.x(二进制)与 Akka
2.4.x
以及Akka2.5.x
兼容,但为了方便构建(并因此发布)工件)取决于2.4
系列。根据您构建依赖项的方式,您可能会遇到依赖于akka-actor
系列2.5
的情况,并且依赖于akka-http
系列中的10.0
反过来会转移版本akka-streams
中的2.4
依赖项,这违反了所有Akka模块必须具有相同版本的二进制兼容性要求,因此akka-streams
依赖项必须是相同的版本作为akka-actor
(所以2.5
系列中的确切版本)。为了解决此依赖性问题,您必须明确依赖akka-streams,并使其与Akka环境的其余部分版本相同....
将您的Akka依赖项更改为以下内容:
val akka = Seq(
"com.typesafe.akka" %% "akka-actor" % v.akka,
"com.typesafe.akka" %% "akka-slf4j" % v.akka,
"com.typesafe.akka" %% "akka-stream" % v.akka // <-- add this
)
(请注意,Akka HTTP当前10.1.x分支的compatibility guidelines已更改。)
答案 1 :(得分:1)
由于scalescrape中使用的Akka-HTTP版本10.0.1与Akka 2.5不同步,很可能造成这种情况。以下是最近Akka-HTTP 10.0.5的发布说明:
这是Akka HTTP 10.0系列的第五个维护版本。它 主要是为了稳定内部与内部对齐 即将推出的Akka 2.5发布。 ...
您可能需要考虑将Akka-HTTP依赖项修改为更新版本的Akka HTTP 10.0。截至目前的最新版本是10.0.11。