首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LinkageError JAXB 2.0 -> 2.1 (Tomcat)

LinkageError JAXB 2.0 -> 2.1 (Tomcat)
EN

Stack Overflow用户
提问于 2009-04-07 12:02:55
回答 3查看 15.1K关注 0票数 8

当我试图访问运行在tomcat中的webservice时,我得到了这个错误。

原因是:JAXB2.0API是从引导类加载器加载的,但是这个RI (来自jar:file:/C:/software/tomcat6/webapps/messaging/WEB-INF/lib/jaxb-impl-2.1.5.jar!/com/sun/xml/bind/v2/model/impl/ModelBuilder.class)需要2.1API)。使用核可的目录机制将jaxb-api.jar放在引导类加载器中。(见http://java.sun.com/j2se/1.5.0/docs/guide/standards/)

我在googled上搜索了错误并做了应该解决的事情(我将jaxb-api.jar,JDK/lib/核可中的2.1版本和JDK/jre/lib/核可)放在一起,但它似乎没有任何效果。

我以前没有过,我也不知道是什么改变了。我使用JDK 6u10。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-04-14 13:32:42

Java 6u 10包含JAXB2.1,因此根本不需要包含它(从6u4开始就包含了它)。

现在看来,webapp应用程序中包含的JAXB与JRE附带的绑定JAXB之间存在冲突。您可以尝试从webapp (C:/software/tomcat6/webapps/messaging/WEB-INF/lib/jaxb-impl-2.1.5.jar)中删除JAXB,并依赖内置版本。

票数 8
EN

Stack Overflow用户

发布于 2009-04-14 13:21:37

建议的方法是定义JAVA_ENDORSED_DIRS环境变量。然后Tomcat将使用这个Java属性:

代码语言:javascript
复制
-Djava.endorsed.dirs=$JAVA_ENDORSED_DIRS

为了装载认可的罐子。因此,创建一个文件夹,将jaxb-api.jar v2.1放在那里,并定义指向该文件夹的环境变量。

这比使用全局认可的目录要好,因为它不影响整个JVM,并且在更新JRE时不必重复这个过程。

票数 2
EN

Stack Overflow用户

发布于 2009-04-07 14:45:44

您是否可能在$JAVA_HOME/jre/lib/ext目录中拥有jaxb jars?下面是引导加载程序的定义:

引导-这个类加载器包含Java虚拟机提供的基本运行时类,以及系统扩展目录($JAVA_HOME/jre/lib/ext)中的JAR文件中的任何类。注意-一些JVM可能将其实现为多个类加载程序,或者它可能根本不可见(作为类加载器)。

(表格这里)

请搜索系统中有jaxb jars的所有位置(至少jaxb-api和jaxb-impl),并确保它们位于web应用程序的web/ lib目录或tomcat的lib目录中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/725337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档