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]), " 中心 ");
}
};
// 上面的代码段删除了就没有问题了
这个问题产生的原因是在不同的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。
如果,我的办法不能解决您的问题,就权当技术交流吧。