我正在尝试通过以下方式将JAXBContext
注入spring应用程序上下文:
<bean id="jaxbContext" class="javax.xml.bind.JAXBContext" factory-method="newInstance">
<constructor-arg type="java.lang.Class" value="com.package.MyClassName"/>
</bean>
它抛出一个异常:
未找到匹配的工厂方法:工厂方法“”newInstance“”
我也试着:
<bean id="jaxbContext" class="javax.xml.bind.JAXBContext" factory-method="newInstance">
<constructor-arg type="java.lang.String" value="com.package"/>
</bean>
它抛出了一个异常:
javax.xml.bind.JAXBException:"com.package“不包含ObjectFactory.class或jaxb.index我确实在"com.package”包中放了一个jaxb.index文件,并且在文件中只有一行"MyClassName“。
发布于 2011-03-22 08:32:09
@Tomasz的答案是我推荐的解决方案,但是如果你想坚持使用JAXBContext
,那么你的第一个例子失败的原因是static getInstance()
method on JAXBContext
没有接受单一的Class
参数,它接受了它们的可变列表。因此,您需要注入一个列表,而不是单个类:
<bean id="jaxbContext" class="javax.xml.bind.JAXBContext" factory-method="newInstance">
<constructor-arg value-type="java.lang.Class">
<list>
<value>com.package.MyClassName</value>
</list>
</constructor-arg>
</bean>
发布于 2011-03-22 07:19:40
你尝试过Spring OXM吗?最后一行很重要,名称空间仅供参考:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:oxm="http://www.springframework.org/schema/oxm"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/oxm http://www.springframework.org/schema/oxm/spring-oxm-1.5.xsd">
<oxm:jaxb2-marshaller id="marshaller" contextPath="com.package"/>
</beans>
参见8.4. XML Schema-based Configuration。您还需要在类路径中使用spring-oxm
。
发布于 2015-03-26 18:03:16
这将解决spring环境中的jaxb.index文件或ObjectFactory问题。提供包的值,其中类是生成xml的类
在此处输入代码`
<bean id="marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="packagesToScan" >
<value>com.adarsh.spring.integration.entities</value>
</property>
</bean>`
https://stackoverflow.com/questions/5387148
复制