在Tomcat中,java.lang.LinkageError:从引导类加载器加载JAXB 2.1 API

时间:2010-11-11 20:38:04

标签: java tomcat grails jar jaxb

我正在尝试将我的webapp加载到Tomcat中。它似乎抱怨它有一个比我的应用程序更旧的JAR版本。我应该删除旧的JAR,使用更新版本的Java,编辑bootstrap类加载器(如何?)或者是什么?

  

消息:正在从引导类加载器加载JAXB 2.1 API,但是这个RI(来自jar:file:/ C:/Program%20Files/Apache%20Software%20Foundation/Tomcat%205.5/webapps/SkillsDB/WEB-INF /lib/jaxb-impl.jar!/com/sun/xml/bind/v2/model/impl/ModelBuilder.class)需要2.2 API。使用endorsed目录机制将jaxb-api.jar放在bootstrap类加载器中。 (见http://java.sun.com/j2se/1.6.0/docs/guide/standards/

     

引起:执行控制器[FormattedDocumentController]的动作[getDocx]导致异常:java.lang.LinkageError:正在从引导类加载器加载JAXB 2.1 API,但是这个RI(来自jar:file:/ C:/ Program) %20Files / Apache%20Software%20Foundation / Tomcat%205.5 / webapps / SkillsDB / WEB-INF / lib / jaxb-impl.jar!/com/sun/xml/bind/v2/model/impl/ModelBuilder.class)需要2.2 API。使用endorsed目录机制将jaxb-api.jar放在bootstrap类加载器中。 (见http://java.sun.com/j2se/1.6.0/docs/guide/standards/

3 个答案:

答案 0 :(得分:2)

将您的JAXB 2.2 JAR放入

%JAVA_HOME%\lib\endorsed

它应该有用。

如果您的Java安装在

C:\Program Files\Java

然后您应该将JAXB 2.2 JAR放入:

C:\Program Files\Java\lib\endorsed

。目录

答案 1 :(得分:2)

我不确切知道为什么,但我按照以下方式解决了这个问题。

我意识到Tomcat使用的是 JVM (jre1.6.0_03),这不是默认的(jre1.6.0_26,在文件夹 C:\ Program Files \ Java \ jre6 )。

所以我停止了Tomcat,启动了“配置Tomcat”程序,在“Java”选项卡中选择了“Use default”,然后再次启动Tomcat。

答案 2 :(得分:0)

将您的JAXB 2.2 JAR放入文件夹中,首先需要找到此文件夹的使用位置:

的System.out.println(System.getProperty( “java.endorsed.dirs”));

我是d:\ Tomcat 7.0 \ endorsed