【问题标题】:Tomcat deployment of grails war having classpath issuesgrails战争的Tomcat部署有类路径问题
【发布时间】:2023-03-26 23:24:01
【问题描述】:

我正在将 WAR 部署到 Windows 2003 Server 机器上的 Tomcat 6 或 Tomcat 7 服务器中。错误看起来像

java.lang.Exception: Error initializing iSec web service proxy: Unable to create JAXBContext for generated packages: "com.integrity_apps" doesnt contain ObjectFactory.class or jaxb.index.

我之前在 tools.jar 不在我的应用程序的类路径中时得到的。我正在使用默认的 Web 容器从 STS 运行 grails 应用程序,我能够通过在 lib 目录中使用 tools.jar 重新安装 JDK 并确保 JAVA_HOME 设置正确来解决此问题。

我在服务器上尝试了相同的步骤 - 仅安装 JDK,确保 JAVA_HOME 指向它,并将我的 WAR 放入 Tomcat 容器中。我仍然收到错误消息。谁能说明为什么会发生这种情况?

作为进一步的数据点,我注意到如果在服务器上直接从命令提示符运行 Tomcat7.exe(将 JAVA_HOME 设置为系统变量),错误就会消失。如果我从服务管理器运行它,错误就会回来。 谢谢

【问题讨论】:

    标签: java tomcat grails classpath


    【解决方案1】:

    看起来“com.integrity_apps”是您的包中包含您的 JAXB bean 类吗?我认为它在包中缺少 ObjectFactory 类。

    检查是否有一个名为“com.integrity_apps”的包,以及该包中是否有一个名为 ObjectFactory 的类。如果没有,您可能想要添加它或使用其他方式让 JAXBContext 知道如何创建您的 JAXB bean。这个关于 SO 的问题可能会有所帮助: Do you always need an ObjectFactory class when using JAXB?

    【讨论】:

    • 我认为这是来自 tools.jar 或 rt.jar 的东西,这是一个 JAXB 依赖项。我认为我没有编写任何明确需要 ObjectFactory 的代码。我添加了一个关于尝试在 win2003 服务器上运行它的进一步数据点
    • ObjectFactory 被 JAXB 框架隐式使用。您的新数据点似乎表明从命令提示符和服务管理器启动时使用了不同的 JVM 安装?我在想你的 JVM 的一个安装可能包含“com.integrity_apps”包的类,而另一个安装没有。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-22
    • 2011-01-24
    • 1970-01-01
    • 2012-04-14
    相关资源
    最近更新 更多