2010-05-22 4 views
5

Tôi chạy:Làm cách nào để chạy gói được tạo bằng Công cụ xây dựng đơn giản?

$ echo 'object Hi { def main(args: Array[String]) { println("Hi!") } }' > hw.scala 
$ sbt 
> warn 
Set log level to warn 
> run 
Hi! 
> package 
$ java -jar target/scala_2.7.7/test_2.7.7-1.0.jar 
Exception in thread "main" java.lang.NoClassDefFoundError: scala/ScalaObject 
at java.lang.ClassLoader.defineClass1(Native Method) 
at java.lang.ClassLoader.defineClass(ClassLoader.java:621) 
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124) 
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260) 

Tại sao tôi không thể chạy gói jar này theo cách này?

Trả lời

4

Bạn đang cố chạy ứng dụng này mà không có thời gian chạy scala. Hoặc sử dụng scala thực thi:

scala -jar target/scala_2.7.7/test_2.7.7-1.0.jar 

hay, thêm jar scala vào classpath

java -cp target/scala_2.7.7/test_2.7.7-1.0.jar:$PATH_TO_SCALA_JAR Hi 
+0

tôi không thể chạy một trong những đầu tiên là tôi phải cài đặt không Scala (SBT đã tải nó và sử dụng trong nội bộ). Cái thứ hai không hoạt động. –

+0

dự án java -cp/boot/scala-2.7.7/lib/scala-library.jar :. -jar target/scala_2.7.7/test_2.7.7-1.0.jar Xin chào # Không hoạt động. –

+0

Bạn không thể kết hợp -cp và -jar với tệp thực thi java. Bao gồm test_2.7.7-1.0.jar của bạn trong đường dẫn lớp. Nếu bạn đang ở trên cửa sổ, dấu phân cách là; không: Vì vậy, hãy thử: dự án java -cp/boot/scala-2.7.7/lib/scala-library.jar: target/scala_2.7.7/test_2.7.7-1.0.jar Xin chào – Synesso

0

Tôi không biết phiên bản nào của SBT bạn đang sử dụng, hoặc những gì thiết lập dự án bạn đã sử dụng , nhưng thông thường tập tin hw.scala của bạn nên được đặt trong thư mục src/main/scala cho sbt để tìm nó. Ngoài ra, như synesso nhận xét, thời gian chạy scala dường như vắng mặt. Thông thường sbt sẽ chỉ tải xuống những điều này khi tạo một dự án mới. Tôi chỉ cố gắng sử dụng SBT 0.7.3 trong một dự án fres, và các công trình này:

 
$ sbt 
Project does not exist, create new project? (y/N/s) y 
Name: test 
Organization: test 
Version [1.0]: 
Scala version [2.7.7]: 
sbt version [0.7.3]: 
Getting Scala 2.7.7 ... 
:: retrieving :: org.scala-tools.sbt#boot-scala 
    confs: [default] 
    2 artifacts copied, 0 already retrieved (9911kB/26ms) 
Getting org.scala-tools.sbt sbt_2.7.7 0.7.3 ... 
:: retrieving :: org.scala-tools.sbt#boot-app 
    confs: [default] 
    15 artifacts copied, 0 already retrieved (4023kB/25ms) 
[success] Successfully initialized directory structure. 
[info] Building project test 1.0 against Scala 2.7.7 
[info] using sbt.DefaultProject with sbt 0.7.3 and Scala 2.7.7 

> exit 

$echo 'object Hi { def main(args: Array[String]) { println("Hi!") } }' > src/main/scala/hw.scala 

> sbt 
[info] Building project test 1.0 against Scala 2.7.7 
[info] using sbt.DefaultProject with sbt 0.7.3 and Scala 2.7.7 
> run 
Hi! 

> package 
[info] 
[info] == compile == 
[info] Source analysis: 0 new/modified, 0 indirectly invalidated, 0 removed. 
[info] Compiling main sources... 
[info] Nothing to compile. 
[info] Post-analysis: 2 classes. 
[info] == compile == 
[info] 
[info] == package == 
[info] == package == 
[success] Successful. 

+0

Tôi đã tạo bằng đầu dự án - s trong (y/N/s). Sử dụng sbt mới. Nó tải về bản thân scala. –