<util:map id="myMap" key-type="com.myClass.Foo.myEnum" value-type="com.myClass.Foo">
<entry>
<key>
<value type="com.myClass.Foo.myEnum">ONE</value>
</key>
<ref bean="myObj"/>
</entry>
</util:map>
爪哇:
package com.myClass
public class Foo {
public enum myEnum {ONE, TWO;}
}
我正在尝试从Spring 2.5创建一个地图。
Map<myEnum, Foo> myMap;
我正在
nested exception is java.lang.ClassNotFoundException:com.myClass.Foo.myEnum
com.myClass.Foo.myEnum
我肯定有com.myClass.Foo
我不知道为什么会收到java.lang.ClassNotFoundException
。
答案 0 :(得分:2)
您的枚举类'完全限定名称是
com.myClass.Foo$myEnum
不是
com.myClass.Foo.myEnum
切换它,它会工作。 Spring使用反射,使用Class.forName()
来获取类的Class
对象并实例化一个对象。 forName()
需要一个完全限定的名称。阅读this以了解您的班级名称包含$
。
请注意,在较新版本的Spring中,有一个catch
块捕获ClassNotFoundException
并在用{{1}替换最后一个forName
后再次尝试.
}。