Skip to main content
 首页 » 编程设计

servlets之SBT、Jetty 和 Servlet 3.0

2025年05月04日65mengfanrong

我有一个非常小的问题。

我有以下 build.sbt 文件:

name := "Tueet" 
 
libraryDependencies += "org.eclipse.jetty" % "jetty-webapp" % "8.1.2.v20120308" 

调用 sbt update 后,我得到以下信息:
[info] Set current project to Tueet (in build file:/C:/dev/tueet/) 
[info] Updating {file:/C:/dev/tueet/}default-d5e982... 
[info] Resolving org.scala-lang#scala-library;2.9.1 ... 
[info] Resolving org.eclipse.jetty#jetty-webapp;8.1.2.v20120308 ... 
[info] Resolving org.eclipse.jetty#jetty-xml;8.1.2.v20120308 ... 
[info] Resolving org.eclipse.jetty#jetty-util;8.1.2.v20120308 ... 
[info] Resolving org.eclipse.jetty#jetty-servlet;8.1.2.v20120308 ... 
[info] Resolving org.eclipse.jetty#jetty-security;8.1.2.v20120308 ... 
[info] Resolving org.eclipse.jetty#jetty-server;8.1.2.v20120308 ... 
[info] Resolving org.eclipse.jetty.orbit#javax.servlet;3.0.0.v201112011016 ... 
[info] Resolving org.eclipse.jetty#jetty-continuation;8.1.2.v20120308 ... 
[info] Resolving org.eclipse.jetty#jetty-http;8.1.2.v20120308 ... 
[info] Resolving org.eclipse.jetty#jetty-io;8.1.2.v20120308 ... 
[warn]  [NOT FOUND  ] org.eclipse.jetty.orbit#javax.servlet;3.0.0.v201112011016!javax.servlet.orbit (603ms) 
[warn] ==== public: tried 
[warn]   http://repo1.maven.org/maven2/org/eclipse/jetty/orbit/javax.servlet/3.0.0.v201112011016/javax.servlet-3.0.0.v201112011016.orbit 
[warn]  :::::::::::::::::::::::::::::::::::::::::::::: 
[warn]  ::              FAILED DOWNLOADS            :: 
[warn]  :: ^ see resolution messages for details  ^ :: 
[warn]  :::::::::::::::::::::::::::::::::::::::::::::: 
[warn]  :: org.eclipse.jetty.orbit#javax.servlet;3.0.0.v201112011016!javax.servlet.orbit 
[warn]  :::::::::::::::::::::::::::::::::::::::::::::: 
[error] {file:/C:/dev/tueet/}default-d5e982/*:update: sbt.ResolveException: download     failed: org.eclipse.jetty.orbit#javax.servlet;3.0.0.v201112011016!javax.servlet.orbit 
[error] Total time: 1 s, completed 2012-03-27 14:33:34 

这很愚蠢,因为它在 Maven 中没有问题。我发现这是因为 Orbit 对包装做了一些事情(他们显然将其设置为轨道)。

我尝试做 exclude("org.eclipse.jetty.orbit", "javax.servlet") 但什么也没发生,它仍然需要依赖。

我找不到有关如何实际解决此问题的任何信息,也许有人会在这里帮助我:)

更新:提出的错误提供了一种解决方法,因此为了解决此问题,我实际上将 build.sbt 更改为
name := "Tueet" 
 
libraryDependencies += "org.eclipse.jetty" % "jetty-server" % "8.1.2.v20120308" 
 
ivyXML :=  
<dependency org="org.eclipse.jetty.orbit" name="javax.servlet" rev="3.0.0.v201112011016"> 
<artifact name="javax.servlet" type="orbit" ext="jar"/> 
</dependency> 

请您参考如下方法:

看到这个错误:https://jira.codehaus.org/browse/JETTY-1493

问题的关键是ivy不支持轨道扩展,需要将轨道包装类型映射到jar。不确定您是否在那里使用 ivy,但根本原因是相同的,您可以通过查看它从 maven central 下载的 url 来了解这一点。

这个错误有更多关于我们首先切换到这些依赖项的原因的背景。

https://bugs.eclipse.org/bugs/show_bug.cgi?id=371954