java – 当xercesImpl.jar位于类路径上时,NetBeans Web服务客户端出现问题

前端之家收集整理的这篇文章主要介绍了java – 当xercesImpl.jar位于类路径上时,NetBeans Web服务客户端出现问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

当xercesImpl.jar作为库包含时,我无法在NetBeans Web应用程序中创建Web服务客户端.

使用NetBeans 6.9和GlassFish 3.0.1:

1.)创建新的Web应用程序
2.)创建一个新的Web服务
3.)向创建的Web服务添加一个新操作(只是让它返回null – 实现并不重要)
4.)将Web服务部署到GlassFish(工作正常)
5.)将xercesImpl.jar(我使用的是版本2.9.1)添加为Web服务的库(我需要使用xerces作为我正在使用的第三方库)
6.)停止Glassfish.
7.)清理并构建项目.
8.)运行项目.测试Web服务是否仍然有效(确实如此).
9.)创建一个新的Web服务客户端.将它指向WSDL(我正在使用http://www.webservicex.com/CurrencyConvertor.asmx?wsdl作为测试).
10.)停止Glassfish.
11.)清理并构建项目.

显示错误消息:

C:\NetBeansProjects\WSTest\nbproject\jaxws-build.xml:43:
Error starting wsimport: BUILD Failed
(total time: 1 second)

第43行是:

12.)重新启动NetBeans.
13.)清理并构建项目. (现在构建工作)
14.)运行项目.除了这个单行错误消息外,GlassFish启动正常:

SEVERE: Error in resolving the catalog

15.)加载Web Service Tester页面会在GlassFish日志中产生以下异常:

WARNING: Servlet web service endpoint 'NewWebService' failure
java.lang.IllegalStateException: WEB9031: WebappClassLoader unable to load resource [Meta-INF/services/org.apache.xerces.xni.parser.XMLParserConfiguration],because it has not yet been started,or was already stopped
at org.glassfish.web.loader.WebappClassLoader.findResourceInternal(WebappClassLoader.java:2085)
at org.glassfish.web.loader.WebappClassLoader.findResource(WebappClassLoader.java:1018)
at org.glassfish.web.loader.WebappClassLoader.getResourceAsStream(WebappClassLoader.java:1255)
at org.apache.xerces.parsers.SecuritySupport$6.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at org.apache.xerces.parsers.SecuritySupport.getResourceAsStream(Unknown Source)
at org.apache.xerces.parsers.ObjectFactory.findJarServiceProvider(Unknown Source)
at org.apache.xerces.parsers.ObjectFactory.createObject(Unknown Source)
at org.apache.xerces.parsers.ObjectFactory.createObject(Unknown Source)
at org.apache.xerces.parsers.SAXParser.Meta-INF/services/org.apache.xerces.xni.parser.XMLParserConfiguration],or was already stopped
at org.glassfish.web.loader.WebappClassLoader.findResourceInternal(WebappClassLoader.java:2085)
at org.glassfish.web.loader.WebappClassLoader.findResource(WebappClassLoader.java:1018)
at org.glassfish.web.loader.WebappClassLoader.getResourceAsStream(WebappClassLoader.java:1255)
at org.apache.xerces.parsers.SecuritySupport$6.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at org.apache.xerces.parsers.SecuritySupport.getResourceAsStream(Unknown Source)
at org.apache.xerces.parsers.ObjectFactory.findJarServiceProvider(Unknown Source)
at org.apache.xerces.parsers.ObjectFactory.createObject(Unknown Source)
at org.apache.xerces.parsers.ObjectFactory.createObject(Unknown Source)
at org.apache.xerces.parsers.SAXParser.

关于我能做些什么来解决这个问题的任何想法?请注意,它仅在我创建新的Web服务客户端/参考之后发生.即使有人可以建议我应该创建一个错误的项目(即它是一个NetBeans错误吗?一个Glassfish错误?一个JAX-WS错误?等等),这将是好事.

最佳答案
好吧,我终于找到了解决方案:

http://forums.java.net/jive/thread.jspa?threadID=59445

我需要做的是从xercesImpl.jar文件删除这些文件

Meta-INF/services/javax.xml.parsers.DocumentBuilderFactory
Meta-INF/services/javax.xml.parsers.SAXParserFactory

修改后的JAR文件包含在我的项目中时,它不再导致任何问题.

如果有人有更整洁的解决方案,请告诉我.

猜你在找的Java相关文章