Service Jetty Web服务器无法启动";java.io.IOException:无法读取文件:…";

Service Jetty Web服务器无法启动";java.io.IOException:无法读取文件:…";,service,jetty,embedded-jetty,Service,Jetty,Embedded Jetty,我检查了已安装的Java版本1.7.0_25和npn-1.7.0_25.mod是否存在于web\modules\protonego impl下\ 我正在windows 2008 R2服务器上使用jetty-9.2.5.v20141112 关于这个案例,annotations.mod是否需要一些特别的东西 这是一个基本的I/O错误,Jetty无法读取该文件 尝试一些基本的故障排除 文件权限 Windows文件锁定问题?(打开该文件的过程不同?) 我们在Windows Server 2008上发现

我检查了已安装的Java版本1.7.0_25和npn-1.7.0_25.mod是否存在于web\modules\protonego impl下\

我正在windows 2008 R2服务器上使用jetty-9.2.5.v20141112


关于这个案例,annotations.mod是否需要一些特别的东西

这是一个基本的I/O错误,Jetty无法读取该文件

尝试一些基本的故障排除

  • 文件权限
  • Windows文件锁定问题?(打开该文件的过程不同?)

我们在Windows Server 2008上发现了相同的问题。当Jetty试图读取模块配置文件时,由于可读性检查中出现故障,就会发生这种情况

在jetty源文件FS.java第39行中,使用java.nio检查文件是否可读:

015-04-08 12:56:30 Commons Daemon procrun stderr initialized
java.io.IOException: Cannot read file: C:\Streem\web\modules\annotations.mod
 at org.eclipse.jetty.start.Modules.registerModule(Modules.java:549)
 at org.eclipse.jetty.start.Modules.registerAll(Modules.java:486)
 at org.eclipse.jetty.start.Main.processCommandLine(Main.java:608)
 at org.eclipse.jetty.start.Main.main(Main.java:111)
对isReadable的调用缓慢且失败,另请参阅:

文件本身实际上是可读的,并且可以从Java成功读取,但是isReadable错误地返回false

有两种可能的解决办法:

  • 升级到Java8
  • 从Jetty源中删除对isReadable的检查(在任何情况下,如果文件不可读,读取将失败并出现异常)

  • (另请参见类似问题)

    谢谢您的回答。我最近发现这个问题只发生在windows 2008 R2上,而不是windows 2012上。我将进一步调查发生这种情况的原因,并向您报告。
    public static boolean canReadFile(Path path)
    {
        return Files.exists(path) && Files.isRegularFile(path) && Files.isReadable(path);
    }