unit name must end with .java, or one of the registered java-like extensions.
1 首先分析这句英文的意思.
Save Failed*(保存失败) Compilation(编译) unit(单元) name(名称) must end with(结束) .java, or one
of the registered(被注册) java-like extensions. (类似java扩展) (保存失败,编译单元名称必须结束,类似java
扩展被注册)
2 网上给出答案是, 要删除删除断点才能继续进行保存.
究竟为什么则样做我们的修改的代码就可以继续保存了?我们进行了如下实验.
A 启动tomcat服务器, 不设置断点, 改动项目中的代码.
可以进行保存, 没有任何的错误提示.
B 启动tomca服务器, 设置断点, 改动项目中的代码.
不可以进行保存, 仍然是报如上面的错误.
C 不启动tomcat服务器, 直接设置断点, 改动项目中的代码进行保存.
不可以进行保存, 仍然报错.
3 结论:
从中我们可以发现 , 无论我们启动还是不启动服务器, myeclipse中的代码如果设置了断点, 我们就不能再进行代码改动了. 这是myeclipse编译器为我们设置的. 因为在改动源代码的时候,保存这个动作时,就会触发编译器去重新编译你刚刚修改的类. 就像有个线程在监控着程序, 一旦有改动, 便自动编译.
而断点, 是在运行的时候才发挥效果的, 最后一次修改后,设置断点的时候就已经完成编译的工作了. 接下来打开网页就是运行了, 运行阶段遇到断点停下来进行调试. 所以在编译中不能有断点, 这就是为什么有断点的时候我们进行保存源代码无法保存的原因了.
这让我们想到VS中设置断点的时候,同样是不能改动代码的 . 但在VS中有一个调试选项,编译并继续这个选项,据说可以在调试的过程中进行编译, 但事实上, 大多数人说即使选择了这一项也是不允许的, 还要看你调试执行的位置和你修改代码的关系,有事即使你改了代码也是只有在下次调试才能真正生效.
而myeclipse中有这样的选项, Activate the workbench when a breakpoint is hit (当设置断点的时候激活工作台)似乎和VS中的编译并继续类似, 但结果是我们在有断点的时候是不能进行编译的.
这就涉及到编译器的构造了,编译器原本的代码我们不清楚哦!.....vs编译器和myeclipse编译器在编译的过程是怎么回事呢?去官网上(代理:http://www.coobai.com/ 官网:www.myeclipseide.com ) ,找了找似乎也没有答案,最
终告诉我们,有断点的时候, 不能改动代码的.去掉断点才可以. 复制项目的时候也是最好去掉程序中的断点再
进行复制.