我不知道为什么Spring在启动我的应用程序时会给我这个错误。我已经在包中定义了java类,并通过bean注入在xml文件中调用它。
这是豆子注射
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="annotatedClasses">
<list>
<value type="java.lang.Class">main.com.mpakhomov.chat.domain.User</value>
<value type="java.lang.Class">main.com.mpakhomov.chat.domain.ChatMessage</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
<prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
<prop key="hibernate.connection.pool_size">${hibernate.connection.pool_size}</prop>
</props>
</property>
</bean>
这是我尝试启动应用程序时遇到的错误的完整堆栈跟踪。
Caused by: org.springframework.beans.TypeMismatchException: Failed to convert value of type 'java.lang.String' to required type 'java.lang.Class'; nested exception is java.lang.IllegalArgumentException: Cannot find class [main.com.mpakhomov.chat.domain.User]
at org.springframework.beans.TypeConverterSupport.doConvert(TypeConverterSupport.java:74)
at org.springframework.beans.TypeConverterSupport.convertIfNecessary(TypeConverterSupport.java:39)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:187)
假设在包中定义了类,请在启动应用程序时出现什么问题?
答案 0 :(得分:0)
我猜你宣布实体包时错了:
如果你的包是com.mpakhomov。*,你应该替换
send_at
与
<list>
<value type="java.lang.Class">main.com.mpakhomov.chat.domain.User</value>
<value type="java.lang.Class">main.com.mpakhomov.chat.domain.ChatMessage</value>
</list>
答案 1 :(得分:0)
我认为您无需为value标记指定type属性。我的猜测是,value标签期望一个String类型,并且您正在尝试转换为java.lang.class
并且它导致IllegalArgumentException。所以参数类型在这里是错误的。您可以在以下行中看到错误。
Caused by: org.springframework.beans.TypeMismatchException: Failed to convert value of type 'java.lang.String' to required type 'java.lang.Class'; nested exception is java.lang.IllegalArgumentException
尝试删除type属性,如下所示
<list>
<value>main.com.mpakhomov.chat.domain.User</value>
<value>main.com.mpakhomov.chat.domain.ChatMessage</value>
</list>
另请参阅spring文档here。它们没有使用value标记传递任何类型属性。以下是他们在文档中使用的示例。
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="annotatedClasses">
<list>
<value>test.package.Foo</value>
<value>test.package.Bar</value>
</list>
</property>
</bean>