您的位置:首页 > 编程语言 > Java开发

Myeclipse下打包spring+jms集成的项目,解决打成的jar包报无法找到xml的context的schema的问题

2012-11-27 12:59 811 查看
描述:最近做一个项目,具体什么项目就不说了,主要是将项目打成jar包在linux服务器上运行。

现象:jar包打好了,未打包之前项目能在IDE上完美运行。但是打成jar包之后,在linux和本机上报错,错误:unable to load XML

schma......后边还有很多。就是无法加载spring中的xml头中的context的xsd文件。

过程:这个问题整整搞了一天。网上也查了很多资料,将引入的xsd头uri改成相对路径呀、还有什么classpath引入xsd呀、反正能试的都试了,

结果还是报这个错误,当我快要没办法的时候,终于看到曙光了:有兴趣的看看下边这两个URL的人说的,他们说的才算是正解。

http://www.pigg.co/spring-namespace-exception.html

http://code.google.com/p/google-web-toolkit/issues/detail?id=5728

问题正如他们分析的那样,在ant打成jar包的时候,由于把项目中的所有jar包也打进去的,每个jar包下的META-INF下边的spring.handlers、spring.schemas、

spring.tools正是放他们本地xsd文件的引用的地方,由于ant打包,里边jar包一起打,这时候里边的spring的一系列jar包相当于解压了。他们的META-INF文件夹一样,

但是里边的内容就覆盖掉了,导致引用的xsd文件只有最后一个覆盖的jar包的META-INF里边的xsd引用,所以不管你这时候applicationContext.xml再怎么改,打出的jar包

永远会报找不到xsd的schma引用。可能本人表述不是很清楚。具体的可以看给的两个url里边的内容。

解决方法:上边给的两个url里边也给了两个解决方法,实际上只有一个。他们都是同一个解决方法,就是重新打包META-INF,可是这里我确实没瞧出来META-INF还

能怎么打包??我的解决方案是重写spring.handlers、spring.schemas、spring.tools三个文件,将需要的xsd文件全部在相应的jar包里边找到写进去,并覆盖进新打的项目

jar包里边,然后运行,成功。

希望大家有这方面的问题多多交流,这玩意问题网上实在难找啊。

 

 

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐