1
<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.myEnumcom.myClass.Foo不知道为什么我得到java.lang.ClassNotFoundException

4

1 回答 1

2

您的枚举类的完全限定名称是

com.myClass.Foo$myEnum

不是

com.myClass.Foo.myEnum

切换它,它会工作。Spring 使用反射Class.forName()来获取Class类的对象并实例化一个对象。forName()需要一个完全限定的名称。阅读本文以了解为什么您的类名包含$.

请注意,在较新版本的 Spring 中,有一个catch块会捕获并在用 替换最后一个后再次ClassNotFoundException尝试。forName.$

于 2013-10-26T03:52:42.067 回答