Jetty 9 服务器没有 start() 方法

Jetty 9 Server has no start() method

我正在尝试在应用程序中嵌入 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 文件:

jetty-server-9.3.7.v20160115.jar

不幸的是,我发现我正在使用的服务器 class 没有 public start() 方法。它有一个受保护的 start() 方法,该方法有一个 LifeCycle 参数,仅此而已。文档中引用的 public start() 方法(以及 Stack Overflow 中的几个答案)不存在!

我使用的服务器是否正确class?如果没有,请问哪里有合适的???

有人请指教...

这里没有问题。

public 修改器 Server.start() 存在,并且自(至少)Jetty 5.0 天以来就存在。

不确定您使用的是什么库/构建,但此方法不受保护,在 Server class、AbstractLifeCycle(抽象)class 或甚至 LifeCycle 界面。

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

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

这是我在 class 中所做的,想要启动 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);
    }
}

这似乎是一个非常错误的答案,但它奏效了。

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

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