转自:http://hi.baidu.com/yu270682210/blog/item/ef4283d5e977fecd51da4bbd.html
众所周知,Eclipse是带有自己的编译器的,而且我们一般都是使用这个默认自带的编译
器去编译自己的项目。但是这个编译器和Sun的javac是否一致呢?别说,还真有那么一点区别。
这是一个普通的 annotation:
-
@Target
(ElementType.METHOD)
-
@Retention
(RetentionPolicy.RUNTIME)
-
@Documented
-
public
@interface
Anno {
-
-
public
String itemName();
-
-
}
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Anno {
public String itemName();
}
下面是一个普通的类,使用了这个 annotation:
-
public
class
UseAnno
-
{
-
@Anno
(itemName=
"test"
)
-
public
void
testMethod() {
-
-
}
-
-
}
public class UseAnno
{
@Anno(itemName="test")
public void testMethod() {
//
}
}
这两个文件无论是用
eclipse
还是Sun的javac编译,都不会出错误。下面我们把annotation修改一下:
-
@Target
(ElementType.METHOD)
-
@Retention
(RetentionPolicy.RUNTIME)
-
@Documented
-
public
@interface
Anno {
-
-
public
String itemName();
-
public
Integer b =
new
Integer(
2
);
-
}
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Anno {
public String itemName();
public Integer b = new Integer(2);
}
然后在
eclipse
里编译,正常通过。运行的时候也不会出错误,而且运行时,用反射的方式也能正确地得到 annotation 里定义的那个变量。
但是如果你用 javac 编译呢?就会出现错误,无法编译,提示:
注释 Anno <clinit> 缺少。
关于 clinit ,大家可以 google 一下资料,我查到的资料是 javac 在处理 clinit 的时候有一些 bug,可能上面这种情况就是这个 bug 的表现症状之一了。
(之所以认为它是编译器的 bug,是因为
eclipse
编译后,在 java 环境中可以正确运行。)
所以:
1、如果可以的话,尽量不使用
eclipse
自带的编译器。
2、如果可以的话,使用 Netbeans 应该是正确的选择,毕竟都是出自Sun的手中。
3、养成持续集成的习惯。否则如果到后期,才发现一些特性在 javac 的编译中会有差别,损失可就大了。
分享到:
相关推荐
配置Eclipse编译器教程
eclipse编译器1
正在学习JAVA语法的各位同行,或许在调试JAVA代码时都遇到过这样的错误 ,eclipse编译器顶层的那行JAVA代码会显示声明的包XXXX与期望的包“”不匹配,如果您是个新手,遇到这样的错误,肯定无从着手,如何解决呢,我...
eclipse编译器2
eclipse编译器4
eclipse编译器3
用eclipse编写jsp页面的时候,直接在页面里输入汉字,保存的时候出现"字符不能匹配ISO-8859-1"的错误提示,在这里可以帮你轻松解决。
Eclipse是著名的跨平台的自由集成开发环境(IDE)。最初主要用来Java语言开发,但现在可通过插件作为其他计算机语言(如C++、Python)的开发工具,众多的插件支持使得Eclipse拥有其他功能相对固定的IDE软件很难具有...
java开发纯净版编译器编译器java开发纯净版编译器编译器
eclipse反编译器即反编译器安装方法,我用的就是这个很好用
eclipseJAVA编译器安装文件,eclipse,java相关开发软件。
eclipse的C++开发工具,很好用,强烈推荐
百度网盘下载地址最新版,下载速度快,JAVA开发利器2020 ecplise下载地址百度网盘 2020 ecplise下载地址百度网盘2020 ecplise下载地址百度网盘
java反编译器 以及Eclipse安装手册,轻松看到jar包内的class代码。
eclipse常用断点和快捷键,开发过程中非常使用的文档
eclipse C++ 编译器 eclipse的C++开发工具,很好用,强烈推荐。
eclipse编译器的快捷键使用说明,包eclipse所有的快捷键,学习后能快速上手eclipse,大大提高开发效率
在eclipse下开发STM32或其他ARM芯片的程序,采用Keil的ARMCC编译器。采用Keil或 gnu arm eclipse + JLink来调试。
本游戏采用Java语言编写,使用Eclipse编译器, jdk1.7.0_51编译环境。 游戏的UI主要运用Java图形界面编程(AWT),实现窗口化可视化的界面。 游戏的后台通过监听键盘方向键来移动数字方块,运用随机数的思想随机...
整个项目使用的数据库为Mysql, JDK版本为1.8,开发环境是Eclipse编译器,使用了Tomcat7.0服务器,开发出一个基于JavaWeb技术的B/S结构的汽车租赁管理系统。 其中项目中在支付模块集成了支付宝沙箱支付功能,登录...