无法通过窗口7中的命令启动jetty服务

时间:2014-01-26 14:13:06

标签: java embedded-jetty

我正在使用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)

2 个答案:

答案 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。

有两种可能的解决方法:

  1. 升级到Java 8
  2. 从Jetty源中删除对isReadable的检查(在任何情况下,如果文件不可读,则读数将因异常而失败)。
  3. (另见类似问题Jetty Web Server unable to start "java.io.IOException: cannot read file:.."