我正在使用jetty-9.1.1.v20140108并试图通过命令行启动jetty服务 向我显示以下错误。为此,使用JRE“1.7.0_02”。
java.io.IOException: Cannot read file: modules\npn\npn-1.7.0_02.mod
at org.eclipse.jetty.start.Modules.registerModule(Modules.java:405)
at org.eclipse.jetty.start.Modules.registerAll(Modules.java:395)
at org.eclipse.jetty.start.Main.processCommandLine(Main.java:561)
at org.eclipse.jetty.start.Main.main(Main.java:102)
答案 0 :(得分:0)
Jetty正在寻找与您正在使用的JRE版本相对应的.mod文件,但它不包含在您的Jetty发行版中。
在您的Jetty / modules / npn目录中,复制“npn-1.7.0_04.mod”并将其命名为“npn-1.7.0_02.mod”。
在文本编辑器中打开文件,并将所有出现的“1.1.0.v20120525”替换为“1.0.0.v20120402”。
有关详细信息,请参阅http://www.eclipse.org/jetty/documentation/current/npn-chapter.html#npn-versions。
答案 1 :(得分:0)
我们在Windows Server 2008上发现了同样的问题。当Jetty尝试读取模块配置文件并且由于检查可读性时出现错误时,会发生这种情况。
在jetty源文件FS.java第39行中,使用java.nio进行检查,以查看该文件是否可读:
^((0?[13578]|10|12)(-|\/)(([1-9])|(0[1-9])|([12])([0-9]?)|(3[01]?))(-|\/)((19)([2-9])(\d{1})|(20)([01])(\d{1})|([8901])(\d{1}))|(0?[2469]|11)(-|\/)(([1-9])|(0[1-9])|([12])([0-9]?)|(3[0]?))(-|\/)((19)([2-9])(\d{1})|(20)([01])(\d{1})|([8901])(\d{1})))$
对isReadable的调用很慢并且失败,另请参见: http://mail.openjdk.java.net/pipermail/nio-discuss/2012-July/000672.html
文件本身实际上是可读的,可以从Java中成功读取,但isReadable错误地返回false。
有两种可能的解决方法:
(另见类似问题Jetty Web Server unable to start "java.io.IOException: cannot read file:..")