【发布时间】:2009-02-04 22:59:22
【问题描述】:
JBOSS 正在扔一个:
java.lang.NoSuchMethodError: org.w3c.dom.Document.getDocumentURI()Ljava/lang/String;加载 wsdl 时出错。我可以将其配置为首选 WAR 中的库而不是系统或应用服务器库吗?
【问题讨论】:
JBOSS 正在扔一个:
java.lang.NoSuchMethodError: org.w3c.dom.Document.getDocumentURI()Ljava/lang/String;加载 wsdl 时出错。我可以将其配置为首选 WAR 中的库而不是系统或应用服务器库吗?
【问题讨论】:
应用服务器应该已经在使用 WEB-INF/lib 中的任何 JAR,以及系统和应用服务器库路径 - 对此的标准方法是 WEB-INF/lib 的 ClassLoader 委托类加载到应用服务器库,它将类加载委托给服务器库,并且只有当父类加载器找不到该类时,它才会尝试加载它自己的类。
换句话说,如果您将相同的类放在WEB-INF/lib 和应用服务器的lib 中,则将始终使用后面的JAR。这意味着可以通过在WEB-INF/lib 和应用服务器的库中使用具有相同名称但不同版本的类来创建冲突 - 您确定这不是导致您的问题的原因吗?你能解决冲突吗?
一些应用服务器(不确定 JBoss,但我知道 WebSphere 允许它)允许您配置类加载器,以便首先检查子加载器(子优先与父优先),但这种类型的配置可能会导致其他问题。
【讨论】: