造成该错误的原因可能是因为使用了不支持的 Selector Provider 导致的。举个例子,在 Windows 操作系统上使用 EPollSelectorProvider 就会引发此问题。解决方法是使用 JDK 默认的 Selector Provider。
可以修改代码来将其强制为 JDK默认提供程序,如下所示:
import java.nio.channels.spi.SelectorProvider;
...
// 设置 SelectorProvider 为 JDK 默认提供程序
System.setProperty("java.nio.channels.spi.SelectorProvider", "sun.nio.ch.PollSelectorProvider");
// 创建 Jetty Server
Server server = new Server(8080);
或者,可以考虑将操作系统相关的选择器提供程序设置为您正在运行的操作系统的默认选择器提供程序。例如,在Windows 操作系统上,您可以按照以下方式设置选择器提供程序:
// 设置 SelectorProvider 为 Windows 默认提供程序
System.setProperty("java.nio.channels.spi.SelectorProvider", "sun.nio.ch.WindowsSelectorProvider");
// 创建 Jetty Server
Server server = new Server(8080);
这样一来,就可以避免 Unsupported Operation Exception 问题,并且 Jetty Server 将在所有操作系统上正常工作。