Eclipse编译某个Java类的时候,程序体没有错误,但是在package处有错误提示

The class file HashMap<K,V>.FrontCache contains a signature '(Ljava/util/HashMap<TK;TV;>.FrontCache;)V' ill-formed at position 29

出错的我估计是下面的代码段:
private static final Map ROLE_LEVEL_MAP = new LinkedHashMap() {
private static final long serialVersionUID = -8978289341498775797L;
{
put(new Integer(LEVEL_ARRAY[0]), " 中心 ");
}
};

这段代码以前是JDK 1.5编译的吧,现在我的JDK是1.7的,应该怎么修改 ?
public static final int[] LEVEL_ARRAY = {1, 2, 3, 4, 5};
private static final Map ROLE_LEVEL_MAP = new LinkedHashMap() {
private static final long serialVersionUID = -8978289341498775797L;
{
put(new Integer(LEVEL_ARRAY[0]), " 中心 ");
}
};
// 上面的代码段删除了就没有问题了

双击打开markers窗口就能看见错误的地方具体到行

追问

追答

Role.java 中的HashMap泛型格式不规范吧你看看

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-09-25

这个问题产生的原因是在不同的jdk版本下编译,可以用如下办法解决:

    在window-preferenecs-java-installed jres下添加jdk 1.7(如果有就不必了);

    右键 工程-properties-java build path-libraries-add library-jre system library点next,选alternate JRE,选jdk 1.7就好了

追问

我现在就是JDK 1.7编译的啊 !

追答

是因为有用jdk 1.5编译的部分,你用我的方法试一下再说。

追问

还是一样的情况啊,我之前的Eclipse版本是3.2.1 的, 现在是3.7 的,不知道与这个有没有关系,不过在Eclipse 3.7 中我已经配置了JDK 5.0了

追答

你这么说,我也说不准了,出现上述问题的原因就是你的代码分别在不同的编译环境下编译,跟eclipse版本是没有什么关系的,它只是个代码编辑器。
总之,原理就是要把不同的版本下编译的代码,统一到较高版本,也就是 JDK 1.7。
如果,我的办法不能解决您的问题,就权当技术交流吧。

本回答被提问者采纳
第2个回答  2013-11-06
HashMap<TK;TV;>这有形式问题 中间是逗号吧 怎么是分号 ,泛型写错了。应该是HashMap<TK,TV>
相似回答