代码之家  ›  专栏  ›  技术社区  ›  Factor Three

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

  •  9
  • Factor Three  · 技术社区  · 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文件:

    jetty服务器-9.3.7.v20160115.jar

    不幸的是,我看到我正在使用的Server类没有公共start()方法。它有一个受保护的start()方法,该方法有一个LifeCycle参数,但仅此而已。文档中引用的public start()方法(以及堆栈溢出中的几个答案)不存在!

    我使用的是正确的服务器类吗?如果没有,我在哪里能找到合适的???

    请有人建议。。。

    4 回复  |  直到 9 年前
        1
  •  7
  •   rgolovakha    9 年前

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

        2
  •  1
  •   Joakim Erdfelt    9 年前

    这里没有问题。

    公共修饰符 Server.start() 存在,并且自(至少)Jetty 5.0天以来一直存在。

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

        3
  •  0
  •   Stephen Rauch Afsar Ali    7 年前
    public abstract interface org.eclipse.jetty.util.component.LifeCycle
    

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

        4
  •  -1
  •   mdhirsch    7 年前

    服务器start()受保护。如果您编写了一个MyJetty类,它除了扩展jettyServer之外什么都不做,并且它是一个内部类,那么您可以调用它的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);
        }
    }
    

    这似乎是一个非常错误的答案,但它起了作用。