加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

为什么我在运行时需要Scala编译器? (Play2 / Salat与Scalap相关

发布时间:2020-12-16 18:03:38 所属栏目:安全 来源:网络整理
导读:我正在使用 Scala / Mongo / Casbah / Salat / Play2,当我尝试使用Salat时,似乎它依赖于Scalap. 它在使用播放运行运行应用程序时工作正常但是在播放开始时我得到以下堆栈: [info] application - Can't create user java.lang.NoClassDefFoundError: scala/t
我正在使用 Scala / Mongo / Casbah / Salat / Play2,当我尝试使用Salat时,似乎它依赖于Scalap.

它在使用播放运行运行应用程序时工作正常但是在播放开始时我得到以下堆栈:

[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"

现在它也可以在游戏开始时正常工作.

但是,运行依赖于scala编译器的运行时依赖项目是否正常?
为什么它与没有scala编译器依赖的play run一起工作?不在生产模式下运行时会自动嵌入吗?

谢谢

解决方法

实际上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作为初始依赖…

在运行时使用编译器很奇怪,但它有效……

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读