Avi*_*lax 6 java scala classpath
我正在使用一个使用Joda Time的Scala脚本.直到今天,这个工作正常.某种程度上,某些事情发生了变化,而且不再有效.
这有效:
$ scala -cp "lib/*"
Welcome to Scala version 2.9.1.final (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_29).
Type in expressions to have them evaluated.
Type :help for more information.
scala> import org.joda.time._
import org.joda.time._
scala> Period.minutes(5)
res0: org.joda.time.Period = PT5M
Run Code Online (Sandbox Code Playgroud)
但这不是:
$ scala -cp "lib/*" test.scala
/Users/avi/Dev/experiments/rollups/scala/test.scala:4: error: object joda is not a member of package org
import org.joda.time._
^
one error found
Run Code Online (Sandbox Code Playgroud)
test.scala 仅包含:
#!/usr/bin/env scala -cp lib/* -deprecation
!#
import org.joda.time._
Period.minutes(5)
Run Code Online (Sandbox Code Playgroud)
这也行不通:
$ scala -cp "lib/*" -e "import org.joda.time._"
/var/folders/c4/gh5y9_cx5bz8x_4wm060l_mm0000gn/T/scalacmd1248995773392653303.scala:1: error: object joda is not a member of package org
import org.joda.time._
^
one error found
Run Code Online (Sandbox Code Playgroud)
它也不是由*在cparg中使用引起的:
$ scala -cp lib/joda-time-2.0.jar:lib/joda-convert-1.2.jar -e "import org.joda.time._"
/var/folders/c4/gh5y9_cx5bz8x_4wm060l_mm0000gn/T/scalacmd5438658792813459030.scala:1: error: object joda is not a member of package org
import org.joda.time._
^
one error found
Run Code Online (Sandbox Code Playgroud)
......这真是太疯狂了,因为这是我上次在这个项目上工作的时间,仅仅一两天前!而现在它不起作用了,我想我肯定已经改变了一些东西,但说实话,我想不出它会是什么.
救命!
Avi*_*lax 12
TL; DR:,fsc"快速编译守护进程",其缓存有问题; fsc -shutdown解决了这个问题.
FreeNode上的Scala IRC频道中的Seth Tisue能够帮助我解决我的问题 - 它与fsc"快速离线编译器守护进程"有关.当该scala命令用于运行脚本时,它会使用fsc,并且看起来守护程序使用/缓存的类路径被搞砸了.
事实证明,有几种方法可以解决这个问题:
-nocompdaemon到scala根本就不使用fsc
fsc -shutdown
scalafsc -reset以重置守护进程的缓存
我仍然不知道究竟是什么原因造成了这个问题,但是我从Seth和fsc页面得到的印象是这种事情有时会发生.
谢谢,塞思!
| 归档时间: |
|
| 查看次数: |
1980 次 |
| 最近记录: |