【问题标题】:Docx4j library in Lucee 5.0Lucee 5.0 中的 Docx4j 库
【发布时间】:2017-02-24 02:37:23
【问题描述】:

背景

Docx4j 是一个 Java 库,可用于将 Microsoft Word 文档作为 Java 中的 XML 处理。我们用 Coldfusion 编写的旧应用程序已经正确使用了这个库。然后我们转向更新的软件 Lucee。这已经给实现 Docx4j 库带来了问题。它最终通过将包含所有依赖项的 Docx4j jar 放入文件夹“wwwroot/WEB-INF/lucee/lib”中来工作。重新启动 Lucee 服务后,它正确加载了 jar。还有一些其他问题,但重要的部分是jar被加载到环境中。

那么现在的问题是什么?

现在我们有一个新项目安装在新的 Lucee 5.0 上。一切正常,只有 docx4j 出现问题。在代码中使用 docx4j 时,它会给出一个错误,指出 Docx4j loggerfactory 未加载。这是 Docx4j 使用的依赖项。我发现一些信息表明 Lucee 5.0 与外部 jar 库的工作方式不同,并且它需要是一个 OSGi 框架包。但是,这再次变得很难理解 Lucee 需要什么才能使其正常工作

我想实现什么

每次与 Coldfusion/Lucee 一起工作的是 jar 文件 Docx4j 以及所有依赖项 jar 文件。所以我把所有这些 jar 文件放在 Coldfusion 读取的文件夹中,然后它就可以工作了。所以我想说的是没有设置文件或类似的东西(可能在 jar 文件本身中?)

我尝试了什么?

所以我当然尝试了几件事:

  • 首先我尝试将它放在“inetpub/wwwroot/WEB-INF/lucee/lib”中。第一次在前端加载函数时,它指出无法加载 loggerfactory。在此之后调用该函数后,它表示它根本无法加载 docx4j。仍然在管理员中它写道 Docx4j 仍然处于活动状态。

  • 尝试通过 Lucee admin 上传 zip 文件,提示上传太大

  • 尝试将其放入“lucee/tomcat/lucee-server/context/lib”。与第 1 点完全相同的问题。我还可以在服务仍在运行时重命名 Docx4j jar。这是不可能的工作示例。在第二次错误发生变化之后,这也很奇怪。这可能是 Lucee 对 jar 文件做了一些事情。

我认为可能的解决方案是什么?

我发现一些信息表明 Lucee 5.0 对 jar 库做了一些不同的事情。现在它期望成为一个 OSGi 包。您可以通过提供使 jar 文件成为捆绑包的 manifest.xml 文件来制作捆绑包。但我不知道我应该怎么做。而且因为它总是与以前的版本一起工作,我认为解决方案可能非常简单。 IE。添加说明依赖关系的行。所以也许是一个 cfadmin 标记,它加载这些依赖项供 Docx4j 使用。

有哪些有用的信息?

从 4.5 到 5 的更新不应该有这个结果。我们需要这个库,否则我们必须回到旧版本,我们的客户不同意。我真的认为最后一个链接中有解决方案,但处理信息非常困难。

【问题讨论】:

    标签: jar dependencies docx4j lucee


    【解决方案1】:

    使用 Lucee 5,您有三种选择:

    1) 如果库是 OSGi 包,只需将其放在 {lucee-server}/bundles

    2) 如果库不是 OSGi 包,就像 Docx4j 的情况一样,将 jar(及其依赖项,如果需要)放到 servlet 容器的类路径中,例如Tomcat 或 Jetty(或您使用的任何一个)。

    “最简单”的事情是将 jar 放在与 Lucee jar 相同的目录中。

    另一个选项是更新容器的类路径,例如在 Tomcat 的情况下,将其添加到 {catalina-base}/conf/catalina.properties 中的 common.loader

    3) 为您的 jar 指定自定义路径,可以作为 createObject(java...) 的参数,也可以通过 this.javaSettingsApplication.cfc 中指定

    至于缺少的依赖项,请务必使用包含所有依赖项的jar,即docx4j-community-3.3.1.zip,而不是docx4j-3.3.1.jar,如果从http://www.docx4java.org/downloads.html下载

    【讨论】:

    • 哇!惊人的。我已经放弃搞砸了,但我看到你发布了一个答案。按照您的要求,我尝试将它与 lucee jar 文件一起使用。这非常有效!所以下周我会尝试一个更好的解决方案,但现在我们知道它可以正常工作。再次感谢,你太棒了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 2012-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多