我一直在尝试使用内置的Jetty服务器支持以及最新的Jetty版本(9.2.10.v20150310)在IntelliJ上运行Jetty。
但是,当我尝试部署战争时,它将失败并引发异常:


  警告:找不到模块[protonego-impl / alpn-1.8.0_45]
  警告:**无法继续,缺少必需的依赖项。 [protonego-impl / alpn-1.8.0_45]
  警告:**按照配置,由于缺少启用的模块依赖性,Jetty无法启动。
  警告:**这可能是由于类似于npn上的间谍的传递依赖关系,该依赖关系基于使用中的JDK进行解析。
  缺少引用的依赖项:protonego-impl / alpn-1.8.0_45


该模块版本确实不在jetty文件夹中(在protonego-impl文件夹中,版本以alpn-1.8.0_31结尾),而且我似乎无法在任何地方下载该文件。有没有人遇到此异常?

最佳答案

Jetty 9.2.10的发布早于Java 1.8.0u45的发布

为了支持HTTP / 2(和SPDY),在Java Classlib级别需要ALPN支持。这是通过Jetty生成的-Xbootclasspath jar来完成的,该jar补充了Java自身内的SSL以支持ALPN。

这意味着Jetty维护了Java SSL的一组修改,这意味着Jetty还必须维护Java版本到ALPN lib版本的映射。

https://www.eclipse.org/jetty/documentation/current/alpn-chapter.html#alpn-versions

从那里可以看到,对于Java 1.8u45,可以使用ALPN库8.1.3.v20150130(与Java 1.8u31使用的ALPN版本相同)

显然,Jetty 9.2.10无法附带此映射,因为这将需要时间机器来完成。

如何在您的机器上更正此错误:

首先,所有这些更改都是针对您的${jetty.base}目录中的实例配置(您确实具有$ {jetty.base}目录,并且没有修改${jetty.home},对吗?)


制作一个${jetty.base}/modules/protonego-impl目录
${jetty.home}/modules/protonego-impl/alpn-1.8.0_31.mod复制(并重命名)到${jetty.base}/modules/protonego-impl/alpn-1.8.0_45.mod
${jetty.base}目录启动您的Jetty实例。


您已完成您的实例,现在能够使用Java 1.8u45运行ALPN lib 8.1.3.v20150130

关于java - 从IntelliJ运行Jetty时找不到模块[protonego-impl/alpn-1.8.0_45],我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30162057/

10-15 03:01