我相信,在不少新手的Eclipse开发环境的某个项目中,存在多个不同的log4j。你或许有过疑虑,但你可能比较幸运,它们没给你带来什么麻烦。
但有些时候,你是否遭遇到类似Missing implementation of interface method或java.io.InvalidClassException的麻烦?
没错,你可能碰到了某些jar包的新老版本冲突问题了。比如,在你部署应用时,可能会出现异常:
Missing implementation of interface method “org.w3c.dom.Document.setXmlVersion(Ljava/lang/String;)V” in class “org.apache.xerces.dom.DocumentImpl
查看exception stack可以得到更详细的信息。
再看一个错误信息:
java.io.InvalidClassException: com.sap.engine.services.deploy.exceptions.ServerDeploymentException; local class incompatible: stream classdesc serialVersionUID = 1, local class serialVersionUID = -1675085298538953692
这是因为部署工具上的ServerDeploymentException的版本和服务器上的版本不同,所以会出现串行化的类在反串行化时异常,表现为serialVersionUID问题。
明白了这一点,问题就好解决了。这从一个层面上告诉我们,开发之外有很多需要引起注意的地方。