日期:2014-05-16  浏览次数:20675 次

Linux的ulimit打开文件数限制造成eclipse不编译

升级了一下Myeclipse的新版本, 导入原有工程的时候, 总是报错, 无法编译.
错误的内容是某个java文件不能读:

The project was not built since the source file xxx.java could not read

?

有时候是报IOException, Spring的applicationContext.xml scan Bean出错.

看了一下文件没问题, 换回Myeclipse旧版本, 也不行, 同样的错误.
在Windows下面试了一下, 没有问题, 直接import工程一点错误都没有.

今天整整搞了一天, 几个版本来回折腾, 都不行. 最后突然想到这个工程很大, 会不会Linux打开文件数目的问题.

ulimit -n看了一下, 当前用户的设置是1024, 很有可能!
查了一下Slackware对于ulimit设置最大打开文件数目, http://slackwiki.org/Resource_Limits

1. 把/sbin/initscript.sample复制为/sbin/initscript, 然后加入ulimit硬限制:

ulimit -Hn 8192
?


2. 在~/.profile里面增加一行软限制:

ulimit -n 8192
?


重启机器就好了, eclipse终于开始编译了......

还有一个问题, 就是在src目录下面居然不认识.svn, 编译时候把src里面的.svn全部拷贝到了classes里面去了.
本来以为classes目录从SVN的忽略列表里面跑出来了, 但是设置了Perference->Team->ignore resources也不行.
最后把 **/.svn/ 加到项目编译的Exclude列表里面, 就把classes目录忽略了,
然后等编译完, 再把这个Exclude去掉, 就可以了. 晕倒