2012-12-19 27 views
5

Tôi gặp một số vấn đề lạ khi sử dụng sbt để xây dựng một lớp Scala đơn giản. Mã này chỉ đơn giản là đủ mà tôi sao chép từ Internet để bắt đầu một máy chủ cầu cảng:scala xây dựng với SBT không thể nhập các lớp java?

object JettyEmbedded { 

    def main(args: Array[String]) { 
    val server = new org.eclipse.jetty.server.Server(9080) 
    val context= new org.eclipse.jetty.webapp.WebAppContext() 

    context.setServer(server) 
    context.setContextPath("/"); 
    context.setWar("src/main/webapp") 
    server.setHandler(context); 

    try { 
     server.start() 
     server.join() 
    } catch { 
     case e: Exception => { 
     e.printStackTrace() 
     System.exit(1) 
     } 
    } 
    } 
} 

để biên dịch với SBT và scala 2.9.2, tôi đã nhận được lỗi sau:

[error] /src/main/scala/JettyEmbedded.scala:4: object eclipse is not a member of package org 
[error] val server = new org.eclipse.jetty.server.Server(9080) 

tôi có thể thấy trong build.sbt, tôi có các phụ thuộc như:

"org.eclipse.jetty" % "jetty-webapp" % "8.1.7.v20120910" % "container", 
"org.eclipse.jetty.orbit" % "javax.servlet" % "3.0.0.v201112011016" % "container;provided;test" artifacts (Artifact("javax.servlet", "jar", "jar")) 

Nếu tôi chỉ xóa tệp vi phạm này và chạy máy chủ Jetty với vùng chứa: bắt đầu từ sbt, nó không có vấn đề gì!

+0

để làm cho nó xa lạ, nó biên dịch và chạy tốt trong Eclipse/Scala-IDE – Wudong

+0

Bạn có chắc chắn bạn có cầu nối trên đường dẫn sbt của bạn? –

+0

Bạn có cầu cảng như một phụ thuộc trong tệp xây dựng của mình không? –

Trả lời

3

Thay đổi dòng này:

"org.eclipse.jetty" % "jetty-webapp" % "8.1.7.v20120910" % "container", 

tới:

"org.eclipse.jetty" % "jetty-webapp" % "8.1.7.v20120910" % "container;provided", 

giải quyết vấn đề.

sbt không đặt class "container" vào classpath biên dịch, trong khi ở Eclipse nó không quan tâm.

+1

Tôi phải thoát sbt và chạy lại. Cảm ơn! Đang làm việc – kirhgoff

0

Có vẻ như bạn không có phụ thuộc cầu nối thích hợp trong tệp build.sbt của mình.

libraryDependencies ++= Seq(
    "org.eclipse.jetty" % "jetty-server" % "8.1.7.v20120910", 
    "org.eclipse.jetty" % "jetty-webapp" % "8.1.7.v20120910" 
) 
+0

xin vui lòng xem bài viết đã chỉnh sửa của tôi. – Wudong

+0

Phụ thuộc của bạn vẫn sai. Hãy thử thay thế những cái trong xây dựng của bạn với những cái trong câu trả lời của tôi. –

+1

Điều gì chính xác với chúng? Bạn có thể giải thích sự khác biệt? Tôi gặp vấn đề tương tự – kirhgoff

Các vấn đề liên quan