मैं एक स्काला स्क्रिप्ट पर काम कर रहा हूं जो जोडा टाइम का उपयोग करता है। आज तक, यह ठीक काम कर रहा था। किसी भी तरह, कुछ बदल गया है और यह अब काम नहीं कर रहा है।मैं स्कैला आरईपीएल से जावा lib का उपयोग क्यों कर सकता हूं लेकिन स्क्रिप्ट से नहीं?
यह काम करता है:
$ 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
लेकिन यह नहीं करता है:
$ 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
केवल शामिल हैं:
#!/usr/bin/env scala -cp lib/* -deprecation
!#
import org.joda.time._
Period.minutes(5)
यह भी काम नहीं करता:
$ 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
यह भी cp
आर्ग में *
का उपयोग कर की वजह से नहीं है:
$ 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
... यह सिर्फ इतना पागल है, क्योंकि इस पिछली बार मैं इस प्रोजेक्ट पर काम काम कर रहा था, बस एक या दो दिन पहले! और अब यह काम नहीं कर रहा है, और मुझे लगता है कि मैंने कुछ बदलना होगा, लेकिन ईमानदारी से मैं नहीं सोच सकता कि यह क्या हो सकता है।
सहायता!
इसे संभालने के लिए _best_ तरीका क्लासपाथ निर्देशों में सापेक्ष पथ का उपयोग नहीं करना है। –
धन्यवाद @ डैनियलसी। सोब्राल, जो समझ में आता है, लेकिन यह स्क्रिप्ट के लिए अव्यवहारिक लगता है। मेरी स्क्रिप्ट में यह शीर्ष पर है: '#!/Usr/bin/env scala -cp lib/* -deprecation ! #' और मैं स्क्रिप्ट को किसी भी स्थान से बाश में शामिल करने में सक्षम होना चाहता हूं। तो शायद ऐसा करने का एक बेहतर तरीका है लेकिन यह मेरे लिए स्पष्ट नहीं है, क्योंकि मैं एक बैश विशेषज्ञ नहीं हूं और न ही स्कैला विशेषज्ञ हूं। –
वैकल्पिक आमंत्रण मोड का उपयोग करें - कॉल sh, और फिर, sh से, कॉल स्कैला, जिस बिंदु पर आप वर्तमान निर्देशिका प्राप्त करने के लिए pwd का उपयोग कर सकते हैं। –