NetBeans中构建Web Service Client失败,求助排查NoClassDefFoundError错误
NoClassDefFoundError问题 错误信息
java.lang.NoClassDefFoundError: com/sun/org/apache/xml/internal/resolver/CatalogManager
at com.sun.xml.ws.util.xml.XmlUtil.createEntityResolver(XmlUtil.java:317)
at com.sun.tools.ws.wscompile.WsimportOptions.parseArguments(WsimportOptions.java:333)
at com.sun.tools.ws.wscompile.WsimportOptions.parseArguments(WsimportOptions.java:262)
at com.sun.tools.ws.wscompile.WsimportTool.parseArguments(WsimportTool.java:379)
at com.sun.tools.ws.wscompile.WsimportTool.run(WsimportTool.java:202)
at com.sun.tools.ws.wscompile.WsimportTool.run(WsimportTool.java:183)
at com.sun.tools.ws.ant.WsImportBase.runInVm(WsImportBase.java:599)
at com.sun.tools.ws.ant.WsTask2.execute(WsTask2.java:487)
at com.sun.tools.ws.ant.WsImportBase.execute(WsImportBase.java:582)
at com.sun.tools.ws.ant.WsImport2.execute(WsImport2.java:53)
at com.sun.istack.tools.ProtectedTask.execute(ProtectedTask.java:103)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:299)
at
BUILD FAILED (total time: 0 seconds)
可行解决办法
检查JDK版本兼容性
该错误多因JDK版本与NetBeans、JAX-WS工具不兼容导致,高版本JDK可能移除了com.sun.org.apache.xml.internal.resolver相关类。建议切换到NetBeans官方推荐的JDK版本(如JDK 8):- 打开NetBeans菜单栏
Tools > Java Platforms - 添加或选中兼容的JDK
- 右键项目,选择
Properties > Libraries,将项目的Java平台切换为该JDK
- 打开NetBeans菜单栏
手动引入resolver依赖
若必须使用高版本JDK,需手动添加包含CatalogManager的库:- 下载
xml-resolver库(推荐版本1.2) - 在项目中右键
Libraries > Add JAR/Folder,添加下载的xml-resolver.jar - 重新尝试生成Web Service Client
- 下载
修改wsimport参数
通过调整wsimport参数跳过Catalog解析:- 右键项目选择
New > Web Service Client - 在向导中点击
Advanced按钮 - 在
Additional wsimport options中添加参数:-catalog "" - 完成向导后重新生成客户端
- 右键项目选择
清理重建项目
缓存文件可能引发异常,执行以下操作:- 点击NetBeans菜单栏
Clean and Build Project - 删除项目目录下的
build和dist文件夹 - 再次尝试创建Web Service Client
- 点击NetBeans菜单栏
内容的提问来源于stack exchange,提问作者Hong Tan

