`
koen
  • 浏览: 80634 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

解决Maven + Spring + JPA遇到的StackOverflowError的错误

阅读更多

使用Maven(2.0.9) + Spring(2.5.6) + JPA(hibernate-entitymanager3.3.2.GA)跑unit test的时候,发现问题。具体情况如下:


当运行“需要被注入EntityManager的类”对应的测试用例的时候,收到以下错误:

 

Caused by: java.lang.StackOverflowError
        at java.lang.Character.toLowerCase(Character.java:4208)
        at java.lang.Character.toLowerCase(Character.java:4175)
        at java.lang.String.toLowerCase(String.java:2409)
        at java.lang.String.toLowerCase(String.java:2497)
        at org.apache.xerces.util.URI.setScheme(URI.java:908)
        at org.apache.xerces.util.URI.initializeScheme(URI.java:576)
        at org.apache.xerces.util.URI.initialize(URI.java:400)
        at org.apache.xerces.util.URI.<init>(URI.java:211)
        at org.apache.xerces.util.URI.<init>(URI.java:195)
        at org.apache.xerces.impl.XMLEntityManager.expandSystemId(XMLEntityManager.java:1140)
        at org.apache.xerces.impl.XMLEntityManager.resolveEntity(XMLEntityManager.java:581)
        at org.apache.xerces.impl.xs.XMLSchemaLoader.xsdToXMLInputSource(XMLSchemaLoader.java:625)
        at org.apache.xerces.impl.xs.XMLSchemaLoader.processJAXPSchemaSource(XMLSchemaLoader.java:580)
        at org.apache.xerces.impl.xs.XMLSchemaLoader.loadSchema(XMLSchemaLoader.java:489)

 

先开始我以为是xml schema路径的问题,找了一会儿,没有结果。Google后有了进展:

 

http://forum.springsource.org/showthread.php?t=34654

 

发现问题出在:该工程对应的pom.xml中没有指定xerces的版本,默认使用了2.0.2版本,而上述StackOverflowError错误正是该版本的一个bug。知道问题原因就好办了,在pom.xml加入以下内容,指定xerces的版本:

 

        <dependency>
            <groupId>xerces</groupId>
            <artifactId>xercesImpl</artifactId>
            <version>2.8.1</version>
            <scope>test</scope>
        </dependency>

 

重新运行,OK。

 

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics