Compilation unit name must end with .java, or one of the registered Java-like extensions (a error分析)

来源:互联网 发布:如何做网络分销 编辑:程序博客网 时间:2024/05/14 19:59

今天在改动项目代码的时候, 进行保存的代码, 保存不成功, tomcat报错:    Save Failed Compilation

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 ) ,找了找似乎也没有答案,最

终告诉我们,有断点的时候, 不能改动代码的.去掉断点才可以. 复制项目的时候也是最好去掉程序中的断点再

进行复制. 

原文:http://blog.csdn.net/lovesummerforever/article/details/9832491

0 0