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

发布于 2024-10-02 12:28:59 字数 1040 浏览 1 评论 0原文

我正在尝试将我的网络应用程序加载到 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

难理解 2024-10-09 12:28:59

将您的 JAXB 2.2 JAR 放入

%JAVA_HOME%\lib\endorsed

它应该可以工作。

如果您的 Java 安装在,

C:\Program Files\Java

那么您应该将 JAXB 2.2 JAR 放入:

C:\Program Files\Java\lib\endorsed

目录中。

Put your JAXB 2.2 JARs in

%JAVA_HOME%\lib\endorsed

It should work.

If your Java is installed in

C:\Program Files\Java

then you should put JAXB 2.2 JARs in:

C:\Program Files\Java\lib\endorsed

directory.

鼻尖触碰 2024-10-09 12:28:59

我不知道到底为什么,但我用以下方式解决了它。

我意识到 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.

不气馁 2024-10-09 12:28:59

将 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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文