Joda Time kullanan bir Scala komut dosyası üzerinde çalışıyorum. Bugüne kadar, bu iyi çalışıyordu. Her nasılsa, bir şey değişti ve artık çalışmıyor.Neden bir Scala REPL dosyasından bir Java lib kullanabilirim, fakat bir betikten değil?
$ 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
ama bu değil:
Bu işleri
$ 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
test.scala
sadece içerir:
#!/usr/bin/env scala -cp lib/* -deprecation
!#
import org.joda.time._
Period.minutes(5)
bu da çalışmaz:
$ 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
Ayrıca cp
arg *
kullanılması da neden değil: Bu ben bu proje üzerinde çalışmış son kez çalışıyordu çünkü
$ 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
... Sadece çok deli, sadece bir veya iki gün önce! Ve şimdi çalışmıyor, ve sanırım bir şeyi değiştirmiş olmalıyım, ama dürüstçe, ne olabileceğini düşünemiyorum.
Yardım!
İşlenecek _best_ yolu, sınıf yolu yönergelerindeki göreli yolları kullanmamaktır. –
Teşekkür @ DanielC.Sobral, bu mantıklı, ancak bu komut dosyaları için pratik gibi görünüyor. Komut dosyasım bunun üst kısmında bulunuyor: '#!/Usr/bin/env scala -cp lib/* -deprecation ! #' Ve betiği bash'ın herhangi bir yerinden çağırmak istiyorum. Belki de bunu yapmanın daha iyi bir yolu var ama benim için belli değil, çünkü ben bir bash uzmanı ya da Scala uzmanı değilim. –
Alternatif çağrı modunu kullanın - sh'i çağırın ve sonra sh'den çağrı scala'yı kullanın, o anda geçerli dizini almak için pwd'yi kullanabilirsiniz. –