gpt4 book ai didi

scala - 为什么我在运行时需要 Scala 编译器? (具有 Scalap 依赖性的 Play2/Salat)

转载 作者:行者123 更新时间:2023-12-04 23:59:40 25 4
gpt4 key购买 nike

我正在使用 Scala/Mongo/Casbah/Salat/Play2,当我尝试使用 Salat 时,它似乎依赖于 Scalap。

使用 play run 运行应用程序时它工作正常但与 play start我得到以下堆栈:

[info] application - Can't create user 
java.lang.NoClassDefFoundError: scala/tools/nsc/util/ClassPath$JavaContext
at scala.tools.scalap.scalax.rules.scalasig.ScalaSigParser$.scalaSigFromAttribute(ScalaSig.scala:35) ~[scalap-2.9.1.jar:na]
at scala.tools.scalap.scalax.rules.scalasig.ScalaSigParser$.parse(ScalaSig.scala:38) ~[scalap-2.9.1.jar:na]
at com.novus.salat.util.ScalaSigUtil$$anonfun$parseScalaSig0$2.apply(ScalaSigUtil.scala:73) ~[salat-util_2.9.1-0.0.8-SNAPSHOT.jar:0.0.8-SNAPSHOT]
at com.novus.salat.util.ScalaSigUtil$$anonfun$parseScalaSig0$2.apply(ScalaSigUtil.scala:73) ~[salat-util_2.9.1-0.0.8-SNAPSHOT.jar:0.0.8-SNAPSHOT]
at scala.Option.map(Option.scala:133) ~[scala-library.jar:na]
at com.novus.salat.util.ScalaSigUtil$.parseScalaSig0(ScalaSigUtil.scala:73) ~[salat-util_2.9.1-0.0.8-SNAPSHOT.jar:0.0.8-SNAPSHOT]
Caused by: java.lang.ClassNotFoundException: scala.tools.nsc.util.ClassPath$JavaContext
at java.net.URLClassLoader$1.run(URLClassLoader.java:366) ~[na:1.7.0_01]
at java.net.URLClassLoader$1.run(URLClassLoader.java:355) ~[na:1.7.0_01]
at java.security.AccessController.doPrivileged(Native Method) ~[na:1.7.0_01]
at java.net.URLClassLoader.findClass(URLClassLoader.java:354) ~[na:1.7.0_01]
at java.lang.ClassLoader.loadClass(ClassLoader.java:423) ~[na:1.7.0_01]
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) ~[na:1.7.0_01]
scala/tools/nsc/util/ClassPath$JavaContext在 Scala 编译器项目中,所以我添加了 SBT 依赖项:
"org.scala-lang" % "scala-compiler" % "2.9.1"

现在它与 play start 一起工作正常也。

但是,运行我的项目时必须运行依赖于 Scala 编译器的项目是否正常?
为什么它适用于 play run没有scala编译器依赖?不在生产模式下运行时是否自动嵌入?

谢谢

最佳答案

实际上 Scalap 依赖于 Scala 编译器:

<dependencies>
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-compiler</artifactId>
<version>2.9.0.RC4</version>
</dependency>
</dependencies>

http://www.jarvana.com/jarvana/inspect-pom/org/scala-lang/scalap/2.9.0.RC4/scalap-2.9.0.RC4.pom

我遇到了问题,因为临时我的依赖项是手动处理的,而不是由 SBT 处理的。

现在我通过 SBT 管理它们并且它工作正常......但是编译器仍然作为传递依赖被检索,而 Salat 作为初始依赖......

在运行时使用编译器很奇怪,但它可以工作......

关于scala - 为什么我在运行时需要 Scala 编译器? (具有 Scalap 依赖性的 Play2/Salat),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11824881/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com