2013-08-03 61 views
7

Nếu tôi phát hành:không thể thêm một lọ để scala repl với: lệnh cp

$ scala -classpath poi-3.9/poi-3.9-20121203.jar 

scala> import org.apache.poi.hssf.usermodel.HSSFSheet 
import org.apache.poi.hssf.usermodel.HSSFSheet 

Mọi thứ hoạt động ok, nhưng nếu thay vào đó tôi phát hành:

$ scala 

scala> :cp poi-3.9/poi-3.9-20121203.jar 
Added '/home/sas/tmp/poi/poi-3.9/poi-3.9-20121203.jar'. Your new classpath is: 
".:/home/sas/tmp/poi/poi-3.9/poi-3.9-20121203.jar" 
Nothing to replay. 

scala> import org.apache.poi.hssf.usermodel.HSSFSheet 
<console>:7: error: object apache is not a member of package org 
     import org.apache.poi.hssf.usermodel.HSSFSheet 
       ^

Tôi có thiếu cái gì?

+0

phiên bản Scala bạn đang sử dụng? – gourlaysama

+4

Rõ ràng đó là một vấn đề đã biết. Nó không hoạt động nữa với Scala 2.10+: [SI-6502] (https://issues.scala-lang.org/browse/SI-6502). – gourlaysama

+0

sử dụng mã phiên bản Á hậu Scala phiên bản 2.10.1 - Bản quyền 2002-2013, LAMP/EPFL – opensas

Trả lời

0

Một cách khác để nhập tệp jar, trong trường hợp này theo mặc định, là thêm liên kết trong $ SCALA_HOME/lib vào tệp jar quan tâm. Sau đó, mỗi khi bạn nhập REPL, các lọ liên kết như vậy sẽ được tải lên.

Ví dụ, đối với poi-3.9-20121203.jar, hãy xem xét

(cd $SCALA_HOME/lib && ln -s full_path_to_poi_jar/poi-3.9-20121203.jar) 
0

Như đã đề cập trong các ý kiến, đây là một vấn đề được biết đến. Bạn có thể sử dụng triển khai REPL thay thế chẳng hạn như Ammonite.

4

Không ai có vẻ đề cập đến điều này, nhưng giải pháp đúng là sử dụng :require command:

scala> :require foo.jar 
Added 'foo.jar' to classpath. 
+0

Đây phải là câu trả lời được chấp nhận vì điều này không cần thay thế thay thế hoặc thay đổi biến môi trường. Hoạt động giống như: cp, cảm ơn bạn đã trợ giúp. – faizan