Java Jetty 9服务器没有start()方法
我试图在应用程序中嵌入Jetty服务器,但发现了一个非常奇怪的问题: 根据文档,可以使用以下代码启动一个简单的服务器(我正在构建它作为测试):Java Jetty 9服务器没有start()方法,java,embedded-jetty,jetty-9,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);
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
不幸的是,我发现我使用的服务器类没有公共start()方法。它有一个受保护的start()方法,该方法有一个生命周期参数,但仅此而已。文档中引用的public start()方法(以及堆栈溢出中的几个答案)不存在
我是否使用了正确的服务器类?如果没有,我在哪里可以买到合适的
请有人告诉我……这里没有问题 存在一个公共修饰符
Server.start()
,该修饰符自Jetty 5.0天以来一直存在
不确定您正在使用什么库/构建,但在服务器
类、抽象生命周期
(抽象)类甚至生命周期
接口中,此方法不受保护。您还需要在项目中添加“jetty util-{version},这将解决您的问题。
或者您可以在项目中使用maven并添加“jetty server-{version}”作为maven依赖项。Maven将自动下载所有jetty服务器相关JAR(包括jetty util-{version})。server.start()受保护。如果您编写了一个MyJetty类,它只扩展jetty服务器,而它是一个内部类,那么您可以对它调用start()方法
这是我在班上做的,我想开始Jetty()
这似乎是一个非常错误的答案,但它奏效了
public abstract interface org.eclipse.jetty.util.component.LifeCycle
在
jetty util-{version}.jar
中,将此jar添加到jetty 9.2.14中的项目构建路径中,它肯定受到保护。下面是一些稍旧的javadoc,它也显示为受保护的@mdhirschstart(LifeCycle)
(受保护/内部)与start()
(public/api)不同。我不明白这有什么帮助。我的依赖项中有两个JAR,并且该方法仍然受到保护。我找不到任何例子来说明这个问题。一旦添加了这个依赖项,它将使用AbstractLifeCycle.start方法。如果您添加了“jetty util-{version}”-请刷新您的项目,现在应该可以使用不带参数的public Server.start方法。谢谢我离开Java有一段时间了,据我回忆,当时还没有扩展方法(比如C#has)。如果解释了它背后的机制,这个答案将非常棒。我找到了自己的答案:AbstractLifeCycle在继承链中很遥远。
public abstract interface org.eclipse.jetty.util.component.LifeCycle