Jetty 9 Server没有start()方法

时间:2016-03-01 22:58:52

标签: java embedded-jetty jetty-9

我正在尝试在应用程序中嵌入Jetty服务器,并且看到一个非常奇怪的问题:

根据文档,可以使用以下代码启动一个简单的服务器(我作为测试构建):

import org.eclipse.jetty.server.Server;

public class SimpleServer throws Exception
{

   public static void main(String[] args)
   {
      Server server = new Server(8080);

      server.start();
      server.join();
   }

}

我相信我从下载的Jetty中获得了正确的Jar文件:

码头 - 服务器 - 9.3.7.v20160115.jar

不幸的是,我发现我使用的Server类没有public start()方法。它有一个受保护的start()方法,它有一个LifeCycle参数,但就是这样。文档中引用的public start()方法(以及Stack Overflow中的几个答案)不存在!

我使用正确的服务器类吗?如果没有,我在哪里得到一个合适的???

有人请指教......

4 个答案:

答案 0 :(得分:6)

您还需要添加" jetty-util- {version}"进入你的项目,这将解决你的问题。 或者您可以在项目中使用maven并添加" jetty-server- {version}"作为maven的依赖。 Maven将自动下载所有jetty-server相关jar(包括jetty-util- {version})。

答案 1 :(得分:1)

这里没问题。

存在公共修饰符Server.start(),自(至少)Jetty 5.0天起就存在。

不确定您正在使用的库/构建版本,但此方法不受Server类,AbstractLifeCycle(抽象)类甚至LifeCycle接口的保护。< / p>

答案 2 :(得分:0)

public abstract interface org.eclipse.jetty.util.component.LifeCycle

jetty-util-{version}.jar中,将此jar添加到项目构建路径

答案 3 :(得分:-1)

Server.start()受到保护。如果你编写了一个MyJetty类,除了扩展jetty Server之外什么都不做,而且它是一个内部类,你可以在它上面调用start()方法。

这是我在课程中想要启动Jetty()

的内容
/**
 * Extend the jetty server just so you can call the protected method start()
 */
static class MyJettyServer extends Server {

    public MyJettyServer(int port) {
        super(port);
    }
}

这似乎是错误的答案,但它确实有效。