2013-06-28 108 views
0

每个好友: 我很困惑,当我看到关于码头的这个异常。jetty扫描器空指针异常

Exception in thread "Scanner-1" java.lang.NullPointerException 
at org.eclipse.jetty.util.Scanner.scanFile(Scanner.java:576) 
at org.eclipse.jetty.util.Scanner.scanFiles(Scanner.java:438) 
at org.eclipse.jetty.util.Scanner.scan(Scanner.java:397) 
at org.eclipse.jetty.util.Scanner$1.run(Scanner.java:348) 
at java.util.TimerThread.mainLoop(Timer.java:512) 
at java.util.TimerThread.run(Timer.java:462) 
Exception in thread "Scanner-0" java.lang.NullPointerException 
at org.eclipse.jetty.util.Scanner.scanFile(Scanner.java:576) 
at org.eclipse.jetty.util.Scanner.scanFiles(Scanner.java:438) 
at org.eclipse.jetty.util.Scanner.scan(Scanner.java:397) 
at org.eclipse.jetty.util.Scanner$1.run(Scanner.java:348) 
at java.util.TimerThread.mainLoop(Timer.java:512) 
at java.util.TimerThread.run(Timer.java:462) 

约Scanner.java的源代码是:

// If it is a directory, scan if it is a known directory or the depth is OK. 
    573   if (f.isDirectory() && (depth<_scanDepth || _scanDepth==-1 ||   
    _scanDirs.contains(f))) 
    574   { 
    575    File[] files = f.listFiles(); 
    576    for (int i=0;i<files.length;i++) 
    577     scanFile(files[i], scanInfoMap,depth+1); 
    578   } 
    579  } 

怎么行576码出现空指针异常?

码头版本:8.1.3.v20120416

需要你帮助的家伙,所以第三季度的玉米粥。

回答

0

在行576上,files为空,这意味着f为空。

请检查f是否成功实例化。

+0

已经知道它在linux中当前shell的句柄数量。 – hpy

+0

你是说'f'是一个实际存在的目录吗? – Mingyu

+0

是的,是jetty中webapp的基础目录。 – hpy

0

我最近遇到了这个非常相同的错误。我所做的就是对最大打开的文件数量设置操作系统限制。

这可以在/etc/security/limits.conf通过添加下列行来设置:

* soft nofile 65536 
* hard nofile 65536 

,然后重新启动服务器。

*表示此设置适用于所有用户。您可以放入您用来运行Jetty进程的特定用户。值65536指定可以打开的最大文件数(nofile)。这个设置的细节可以通过查看limits.conf手册页找到。

+0

是的。 handler num太小。 – hpy