Java 将docx4j库与JBoss7一起使用

Java 将docx4j库与JBoss7一起使用,java,jboss7.x,docx4j,Java,Jboss7.x,Docx4j,我尝试使用pptx4j库生成pptx。我可以成功生成pptx。然后我将代码应用到一个运行在JBoss7服务器上的大型项目中。项目已成功部署到服务器上。但当我试图运行应用程序时,它会给出以下异常 java.lang.NoClassDefFoundError:com/sun/xml/internal/bind/marshaller/NamespacePrefixMapper 代码中的下一行出现该异常 PresentationMLPackage presentationMLPackage = Pres

我尝试使用pptx4j库生成pptx。我可以成功生成pptx。然后我将代码应用到一个运行在JBoss7服务器上的大型项目中。项目已成功部署到服务器上。但当我试图运行应用程序时,它会给出以下异常

java.lang.NoClassDefFoundError:com/sun/xml/internal/bind/marshaller/NamespacePrefixMapper

代码中的下一行出现该异常

PresentationMLPackage presentationMLPackage = PresentationMLPackage
                .createPackage(); 

在JBoss7服务器上是否有运行docx4j库的特殊方式。我在互联网上搜索了更多内容,但找不到解决方案。

JBossAS7引入了模块(bundle)的概念,它极大地改变了类的加载方式。您应该熟悉这个概念:

jboss-deployment-structure.xml是一个特定于jboss的部署描述符,可用于以细粒度方式控制类加载。它应该放在顶级部署中,即META-INF(或WEB部署的WEB-INF)中。它可以执行以下操作:

  • 防止添加自动依赖项
  • 添加其他依赖项
  • 定义其他模块
  • 更改独立类加载行为
  • 向模块添加其他资源根
当您在JBossAS7中得到一个
NoClassDefFoundError
时,您可以打赌您在某个地方缺少依赖项。至于您的具体情况,您需要在module
com.sun.xml.bind
上添加一个依赖项

docx4j
甚至有一个页面用于:

要使docx4j在您的WAR中工作,您只需要包含WEB-INF/jboss-deployment-structure.xml,其中包含:

<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.1">
    <deployment>
        <dependencies>
            <module name="com.sun.xml.bind" />
       </dependencies>
    </deployment>
</jboss-deployment-structure>


JBossAS7引入了模块(bundle)的概念,它极大地改变了类的加载方式。您应该熟悉这个概念:

jboss-deployment-structure.xml是一个特定于jboss的部署描述符,可用于以细粒度方式控制类加载。它应该放在顶级部署中,即META-INF(或WEB部署的WEB-INF)中。它可以执行以下操作:

  • 防止添加自动依赖项
  • 添加其他依赖项
  • 定义其他模块
  • 更改独立类加载行为
  • 向模块添加其他资源根
当您在JBossAS7中得到一个
NoClassDefFoundError
时,您可以打赌您在某个地方缺少依赖项。至于您的具体情况,您需要在module
com.sun.xml.bind
上添加一个依赖项

docx4j
甚至有一个页面用于:

要使docx4j在您的WAR中工作,您只需要包含WEB-INF/jboss-deployment-structure.xml,其中包含:

<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.1">
    <deployment>
        <dependencies>
            <module name="com.sun.xml.bind" />
       </dependencies>
    </deployment>
</jboss-deployment-structure>


你真的“搜索互联网”了吗?在这个论坛上有很多关于JBoss和docx4j的问题。看看这个帖子是否有用:这里还有一个论坛,里面有JBoss7配置说明:我遵循了stackoverflow.com/questions/16204635/link。但这里面只有一个解决方案。它必须使用jboss EAP 6.2版本。我想使用JBoss7版本。docx4java.org/forums/jboss-f29/jboss-7-config-t1678.html。。。在这个链接中,也没有解决方案。这只是一个问题。使用EAP 6.2版本只是答案之一。我知道您正在使用JBoss 7.x——该线程中的版本是相同的。不管怎样,这都要归结到JBoss中新类加载的工作方式,我链接到的docx4j线程中有很多关于这方面的内容(你说在这个链接中没有解决方案,确实有)。你真的“搜索互联网”了吗?在这个论坛上有很多关于JBoss和docx4j的问题。看看这个帖子是否有用:这里还有一个论坛,里面有JBoss7配置说明:我遵循了stackoverflow.com/questions/16204635/link。但这里面只有一个解决方案。它必须使用jboss EAP 6.2版本。我想使用JBoss7版本。docx4java.org/forums/jboss-f29/jboss-7-config-t1678.html。。。在这个链接中,也没有解决方案。这只是一个问题。使用EAP 6.2版本只是答案之一。我知道您正在使用JBoss 7.x——该线程中的版本是相同的。不管怎样,这都要归结到JBoss中新类加载的工作方式,我链接到的docx4j线程中有很多关于这方面的内容(你说在这个链接中没有解决方案,确实有)。