我有一个项目使用 jetty 12 服务器运行一些测试(顺便说一句,为什么它被称为遗留服务器?)。
<!-- https://mvnrepository.com/artifact/org.eclipse.jetty/jetty-server -->
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
<version>12.0.8</version>
</dependency>
我有这个 init 方法来创建服务器:
protected static void initServer() throws Exception {
freeHttpPort = PortUtility.getFreePort();
freeHttpsPort = PortUtility.getFreePort(freeHttpPort);
server = new Server();
server.setStopAtShutdown(true);
// create a http connector
final ServerConnector httpConnector = new ServerConnector(server, 1, 1, new HttpConnectionFactory());
httpConnector.setPort(freeHttpPort);
server.addConnector(httpConnector);
// create two way ssl factory
final SslContextFactory sslContextFactory = new SslContextFactory.Server();
final KeyStore keyStore = load("/server.p12", "xxx");
sslContextFactory.setKeyStorePassword("xxx");
sslContextFactory.setKeyStore(keyStore);
sslContextFactory.setTrustStorePassword("xxx");
sslContextFactory.setTrustStore(keyStore);
HttpConfiguration secureConfig = new HttpConfiguration();
secureConfig.addCustomizer(new SecureRequestCustomizer());
HttpConnectionFactory https = new HttpConnectionFactory(secureConfig);
ConnectionFactory ssl = new SslConnectionFactory((SslContextFactory.Server) sslContextFactory, https.getProtocol());
ServerConnector secureConnector = new ServerConnector(server, 1, 1, ssl, https);
server.addConnector(secureConnector);
}
当测试运行时,它会启动服务器,但我在 new Server();:
处收到以下异常java.lang.NoSuchMethodError: 'boolean org.eclipse.jetty.server.Handler$Wrapper.installBean(java.lang.Object)'
如何解决这个问题?我缺少依赖吗?我发现很难看出基本的 jetty 12 服务器需要哪些依赖项。我尝试遵循编程指南:https://eclipse.dev/jetty/documentation/jetty-12/programming-guide/index.html#pg-server
您的依赖树中混合了 Jetty 版本。
运行
mvn dependency:tree
并查看您的码头版本。
修复不匹配的jetty版本,你应该会成功。
如果您使用 Maven,请考虑使用 jetty 核心的 maven bom(注意也有 ee# 特定的)
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-bom</artifactId>
<version>12.0.8</version>
<type>pom</type>
<scope>import</scope>
</dependency>