我正在尝试在应用程序中嵌入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中的几个答案)不存在!
我使用正确的服务器类吗?如果没有,我在哪里得到一个合适的???
有人请指教......
答案 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);
}
}
这似乎是错误的答案,但它确实有效。