前几日项目缓存太厉害,改了代码还是执行原来的,一怒之下clean了项目。发现项目启动时报beans.xml cannot be opened错误,这种情况是MyEclipse在clean之后没能重新编译导致的(Web-INF/classes下为空)。
有两种解决方式:
1. 是我们clean之后,MyEclipse这才发现我们有的包库中的包引用路径已经失效了,这种情况检查包引用和Lib的有效性,删除引用失败的包,重新引用正确的位置即可。(注意,我们在项目中没有引用的包 在UserLibrary中有,也会导致这个错误。所以检查时不单要检查本项目引用的库和包,还要检查properties中,所有的UserLibrary引用的包路径)
2. 把beans.xml重新复制到WEB-INF/classes下,如果这里没有beans.xml,自然之前会出错。假如原来就有,也覆盖一次,再次重启服务器,OK。
我用上面两种方式已经可以解决不能自动编译的问题,下面引用网上一个全面的解决方案,适合各种不编译情况:
MyEclipse不自动编译解决方法
这两天MyEclipse 不编译了,无论怎么更改保存, classes目录下都是空的.
在网上找了很多文章,总结如下:
MyEclipse不编译解决1. 确保 project->build automatically 已经被选上.
MyEclipse不编译解决2. 如果选上了,也不好使, 使用这一招: project->clean..->选第2个clean select project, 勾上start build immediatelly
MyEclipse不编译解决3.删除现在的项目,提前设置好编译文件输出路径,重新导入源文件,设置MyEclipse为保存时编译,然后在保存的时候就可以自动编译了
MyEclipse不编译解决4.如果项目里引了某个不用的jar包,而那个包又被你删了,就会出现不报错但怎么也编译不出来class文件的情况,可以把所有包都删除,然后一个一个的再引入(需要的),不要一下子把所有包都引入来,没用的可能会引起不良后果.
MyEclipse不编译解决5. 想删掉某个class文件重新生成,删除class文件后,但classes目录下的文件夹被其它程序打开,比如Total Commander。此时编译也不会通过,在problems下可能会提示“con''t delete classes ……”。关掉其它程序重新编译即可。
MyEclipse不编译解决6.还有种情况是remove掉 JRE System Library,重新导入即可编译。但是什么原因导致的还不清楚。
MyEclipse不编译解决7.把build path中所有包都remove掉。然后又add jars,add libraries把需要的加进去,居然又开始编译了。。。
MyEclipse不编译解决8.project->properties->java build path->source->.../WEB-INF/src的output folder不要默认,编辑让它指向../WEB-INF/classes
然后重新点击build工程即可自动编译。我的问题出在这里,我把这个编译目录给误删了
MyEclipse不编译解决9.再就是最重要的要看工程下面是否缺少了work目录,由于CVS控制时不把work加如版本,所以checkout后没有这个目录,要手工加上有的工程就能自动编译了
最开始的时候,我只找到了前面7个方法,但是他们都没有解决我的问题.无意中我打开了"Problems"标签,发现里面说缺少work目录,手工加上,然后刷新项目就可以了.
最后两个是我在写这个总结的时候发现的.特别是第九条,对使用CVS进行版本控制的项目比较有用.
.classpath这个xml文件要仔细看
MyEclipse不编译的解决方案就是这些了,希望对你有帮助。
手动编译方法:
点击打开链接
MyEclipse 菜单 Project->Build Automatically 选中后,项目的文件会被自动编辑。要想手动编译整个项目,可使用菜单 Project->Build All 或 Project->Build Project。还有个比较笨的方法,就是运行整个项目。运行项目时,MyEclipse 会先对项目进行编译。
但是有个问题,Build All、Build Project 菜单项常常是恢掉的,不可执行。其实,这是因为我们勾选了 Project->Build Automatically 项。取消掉 Project->Build Automatically 后,Build All 和 Build Project 菜单项就可以用了。