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去掉, 就可以了. 晕倒

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux系统中,每个进程都有一个文件描述符表,用于跟踪它打开的文件。文件描述符是一个非负整,它在打开文件时由内核分配。 Linux对进程打开文件设置了限制,这个限制被称为文件描述符限制打开文件限制。这个限制控制了一个进程能够同时打开的文件量。 文件描述符限制通常由操作系统的配置文件中的参控制。我们可以通过 ulimit 命令来查看和修改这些限制。 默认情况下,一个进程可以打开1024个文件。但是,这个限制是可以根据系统的需求进行修改的。一般来说,增加文件描述符限制可能会消耗更多的系统资源。 如果一个进程需要打开更多的文件,可以通过修改操作系统配置文件来增加文件描述符限制。比如,在/etc/security/limits.conf文件中,可以通过添加如下行来增加文件描述符限制: * soft nofile 4096 * hard nofile 8192 这将允许所有用户的进程打开的文件上限分别为4096和8192。 需要注意的是,文件描述符限制是针对每个进程的,而不是整个系统。这意味着,每个进程都可以独立地设置自己的文件描述符限制,并且不会影响其他进程。 Linux进程的文件描述符限制对于保护系统的稳定性和安全性非常重要。通过合理设置文件描述符限制,可以防止一个进程占用过多的系统资源,从而避免系统崩溃或资源竞争的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值