5

我们有一个 Web 应用程序,可以部署在许多应用程序服务器上,包括 Oracle 10g。然而,在那个平台上,我们遇到了类路径问题。webapp 使用 JAXB 2,但 Oracle 10g 附带 JAXB 1,这会导致错误。为了解决这些问题,我们将 Oracle 配置为首选 Web 应用程序中的类,但现在我们在尝试实例化 JAXB 上下文时遇到上述错误。

查找“违反加载器约束”异常 - 当已加载一个类加载器的类尝试访问同一包中的包私有但由不同的类加载器加载的内容时,似乎会抛出该异常。我已经尝试在我们的 webapp 中删除任何包含 javax.xml.namespace.QName 的 jar,并验证它是被拾取的 Oracle 中包含的实例,但错误仍然存​​在。有任何想法吗?

(这是关于 10g 和 JAXB 2的早期问题的后续问题。)

4

4 回答 4

3

这个类是 WS Java 库的一半。从多个类加载器加载它并稍后比较它们真的很容易,从而导致 LinkageError。

跟踪此问题的一种有效(但大锤)技术是从 Java 源修改 Classloader 以转储该特定类在加载时从哪个 jar 加载,然后在您的引导类路径之前添加修改后的版本:

-Xbootclasspath/p:/path/to/hackedBin

于 2008-09-25T17:27:16.423 回答
1

您使用的是什么版本的 Java?最新版本随 rt.jar 中的此类一起提供。

于 2008-09-25T15:30:40.917 回答
0

可能是完全不相关的,但我记得 Weblogic 在同一个类中遇到的问题。问题的原因是更改了类的序列号(Sun 意外更改了它)。解决方法是向 JVM 提供 -Dcom.sun.xml.namespace.QName.useCompatibleSerialVersionUID=1.0。

会不会是同一个问题,只是误报了?试试看。

见这里: http: //forums.bea.com/thread.jspa?threadID=600014563

于 2008-09-25T16:13:38.753 回答
0

lib您可以只更新应用服务器文件夹下的 JAXB jar吗?

于 2008-10-22T16:37:45.750 回答