在 Tomcat 中,java.lang.LinkageError: JAXB 2.1 API 正在从引导类加载器加载
我正在尝试将我的网络应用程序加载到 Tomcat 中。它似乎在抱怨它的 JAR 版本比我的应用程序旧。我应该删除旧的 JAR、使用更新版本的 Java、编辑引导类加载器(如何?)还是什么?
消息:正在从引导类加载器加载 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。使用认可的目录机制将 jaxb-api.jar 放置在引导类加载器中。 (参见http://java.sun.com/j2se/1.6 .0/docs/guide/standards/)
原因:执行控制器 [FormattedDocumentController] 的操作 [getDocx] 导致异常:
java.lang.LinkageError
:正在从引导类加载器加载 JAXB 2.1 API,但此 RI(来自 jar:文件:/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。使用认可的目录机制将 jaxb-api.jar 放置在引导类加载器中。 (参见 http://java.sun.com/j2se/1.6 .0/docs/guide/standards/)
I am trying to load my webapp into Tomcat. It seems to be complaining that it has an older version of a JAR than my application. Should I remove that older JAR, use a newer version of Java, edit the bootstrap classloader (how?) or what?
Message: JAXB 2.1 API is being loaded from the bootstrap classloader, but this RI (from 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) needs 2.2 API. Use the endorsed directory mechanism to place jaxb-api.jar in the bootstrap classloader. (See http://java.sun.com/j2se/1.6.0/docs/guide/standards/)
Caused by: Executing action [getDocx] of controller [FormattedDocumentController] caused exception:
java.lang.LinkageError
: JAXB 2.1 API is being loaded from the bootstrap classloader, but this RI (from 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) needs 2.2 API. Use the endorsed directory mechanism to place jaxb-api.jar in the bootstrap classloader. (See http://java.sun.com/j2se/1.6.0/docs/guide/standards/)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
将您的 JAXB 2.2 JAR 放入
它应该可以工作。
如果您的 Java 安装在,
那么您应该将 JAXB 2.2 JAR 放入:
目录中。
Put your JAXB 2.2 JARs in
It should work.
If your Java is installed in
then you should put JAXB 2.2 JARs in:
directory.
我不知道到底为什么,但我用以下方式解决了它。
我意识到 Tomcat 使用的是 JVM (jre1.6.0_03) 这不是默认的(jre1.6.0_26,位于文件夹C:\Program Files\ Java\jre6)。
所以我停止了Tomcat,启动了“配置Tomcat”程序,在“Java”选项卡中选择“使用默认值”,然后再次启动Tomcat。
I don't know exactly why, but I solved it in following way.
I realized Tomcat was using a JVM (jre1.6.0_03) that was not the default one (jre1.6.0_26, in folder C:\Program Files\Java\jre6).
So I stopped Tomcat, launched the program "Configure Tomcat", in "Java" tabsheet chose "Use default" and then started again Tomcat.
将 JAXB 2.2 JAR 放入文件夹中,您需要首先找出该文件夹在哪里使用:
System.out.println(System.getProperty("java.endorsed.dirs"));
我的是 d:\Tomcat 7.0\endorsed
Put your JAXB 2.2 JARs in folder, you need first find out where this folder is using this:
System.out.println(System.getProperty("java.endorsed.dirs"));
Mine was d:\Tomcat 7.0\endorsed