- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要修改一个具有多个命名空间的 xml 文档。我的代码在本地计算机上运行没有问题,但当我将其部署到 IBM Websphere 应用程序服务器时遇到 java.lang.IncompleteClassChangeError。
我正在使用 xercesImpl-2.8.1.jar 和 xalan-2.7.0.jar。是什么导致了这个错误以及如何解决它?或者,是否有其他方法可以通过命名空间支持来修改 xml 文档?
代码:
System.setProperty("javax.xml.parsers.DocumentBuilderFactory", "org.apache.xerces.jaxp.DocumentBuilderFactoryImpl");
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true);
DocumentBuilder db = dbf.newDocumentBuilder();
org.w3c.dom.Document doc = db.parse(new java.io.FileInputStream("c:/test.xml"));
System.setProperty("javax.xml.xpath.XPathFactory", "org.apache.xpath.jaxp.XPathFactoryImpl");
XPathFactory xf = XPathFactory.newInstance();
XPath xpath = xf.newXPath();
xpath.setNamespaceContext(new MyNamespaceContext());
// get the node for editing
String xpathExpr = ...
org.w3c.dom.Node n = (org.w3c.dom.Node)xpath.compile(xpathExpr).evaluate(doc, XPathConstants.NODE); // IncompatibleClassChangeError here
异常堆栈跟踪:
java.lang.IncompatibleClassChangeError
at org.apache.xpath.jaxp.JAXPPrefixResolver.getNamespaceForPrefix(JAXPPrefixResolver.java:45)
at org.apache.xpath.compiler.Lexer.mapNSTokens(Lexer.java:587)
at org.apache.xpath.compiler.Lexer.tokenize(Lexer.java:265)
at org.apache.xpath.compiler.Lexer.tokenize(Lexer.java:96)
at org.apache.xpath.compiler.XPathParser.initXPath(XPathParser.java:110)
at org.apache.xpath.XPath.<init>(XPath.java:176)
at org.apache.xpath.XPath.<init>(XPath.java:264)
at org.apache.xpath.jaxp.XPathImpl.compile(XPathImpl.java:394)
at com.ibm._jsp._xml._jspService(_xml.java:94)
at com.ibm.ws.jsp.runtime.HttpJspBase.service(HttpJspBase.java:87)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1146)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:592)
at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:525)
at com.ibm.wsspi.webcontainer.servlet.GenericServletWrapper.handleRequest(GenericServletWrapper.java:122)
at com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionServletWrapper.handleRequest(AbstractJSPExtensionServletWrapper.java:232)
at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3548)
at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:269)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:831)
at com.ibm.ws.wswebcontainer.WebContainer.handleRequest(WebContainer.java:1478)
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:133)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:458)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:387)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:267)
at com.ibm.ws.ssl.channel.impl.SSLConnectionLink.determineNextChannel(SSLConnectionLink.java:1037)
at com.ibm.ws.ssl.channel.impl.SSLConnectionLink$MyReadCompletedCallback.complete(SSLConnectionLink.java:644)
at com.ibm.ws.ssl.channel.impl.SSLReadServiceContext$SSLReadCompletedCallback.complete(SSLReadServiceContext.java:1818)
at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:136)
at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:196)
at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:751)
at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:881)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1497)
最佳答案
我通常的经验法则是,IncompleteClassChangeError 意味着编译器在编译时看到的某个类的版本与运行时加载的同一类的版本不兼容。堆栈跟踪显示 XPath 引擎正在对您的 NamespaceResolver 进行回调,因此应该重点关注调查。
关于java - 使用命名空间评估 xpath 表达式时出现 IncompleteClassChangeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8148670/
我在实体中遇到 @Version 的乐观锁问题 没有@Version,所有操作都可以正常工作,但我需要版本控制和锁定。 @NoArgsConstructor @Data @Builder @Equal
Exception in thread "main" java.lang.IncompatibleClassChangeError: Implementing class at java.la
我正在尝试一对一的 JPA 注释。但出现以下错误 Exception in thread "main" java.lang.IncompatibleClassChangeError: class or
我需要修改一个具有多个命名空间的 xml 文档。我的代码在本地计算机上运行没有问题,但当我将其部署到 IBM Websphere 应用程序服务器时遇到 java.lang.IncompleteClas
Error occurred during deployment: Exception while loading the app : java.lang.IllegalStateException:
Gwt -> RPC -> MongoDB (Morphia) Caused by: java.lang.IncompatibleClassChangeError: Implementing clas
每次我用 JmsTemplate 发送消息时都会抛出异常。 (我使用Spring 3.0.5.RELEASE)。我找不到不兼容的类! 我的类路径中的 Spring jar: 错误日志: springf
我对 Java 还很陌生,我正在尝试放心地绕过 API 测试。我使用以下 pom 文件尝试了我的代码: 4.0.0 com.yourcompany.restassured
我只是想测试这个小片段: import static spark.Spark.get; public class AppMain { public static void main(Strin
我将 Java 库打包为 JAR,当我尝试从中调用方法时,它会抛出许多 java.lang.IncompleteClassChangeError。这些错误似乎是随机出现的。什么样的问题可能导致此错误?
尝试在 Tomcat 服务器上运行我的应用程序时出现以下错误。看起来我的 jar 里的某个地方有冲突,但我不知道在哪里。你能帮我查一下吗? 感谢您的帮助! 错误: May 28, 2015 4:20:
我有一个类,允许我使用 LDAP 进行身份验证。当我在只有一个类的项目中运行此代码时(出于测试原因),我没有遇到问题,并且它返回一个 boolean 值,正如预期的那样,但是当我在我正在工作的项目中运
我正在尝试在 weblogic 12c 中部署我的遗留应用程序(支持 java 6,7,8),但每次它显示 java.lang.InknownClassChangeError: Implementin
HTTP Status 500 - Handler processing failed; nested exception is java.lang.IncompatibleClassChangeEr
将依赖项更新到最新版本后,由于缺少接口(interface)实现,我们在发布版本中遇到了运行时崩溃 java.lang.IncompatibleClassChangeError: Class 'com
我们在运行 openjdk 版本“1.8.0_201”的 RedHat Linux 环境中的 tomcat 8 上进行 SOAP 客户端调用时遇到问题,而相同的调用在 Windows 计算机(tomc
我正在使用 RxJava,现在我尝试通过提供 lambda 来订阅可观察对象: observableProvider.stringForKey(CURRENT_DELETED_ID) .sub
我尝试通过 Java 将 Titan 与 HBase 结合使用,并收到此错误: Exception in thread "main" java.lang.IncompatibleClassChange
我尝试在 IntelliJ Ultimate 2018.3.6 中使用 HtmlUnit 和以下 Java 代码 public static void main(String[] args) {
我正在解决 ReSTLet 应用程序问题,并认为建立一个包含要测试的应用程序精简版本的 Github 存储库会很棒。然而,事情从来没有那么容易...... 存储库位于:https://github.c
我是一名优秀的程序员,十分优秀!