Lucee 5.0 中的 Docx4j 库
Docx4j library in Lucee 5.0
背景
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 包。您可以通过提供一个 manifest.xml 文件来制作一个包,该文件使 jar 文件成为一个包。但我不知道我应该怎么做。而且因为它始终适用于以前的版本,所以我认为解决方案可能非常简单。 IE。添加一行说明依赖关系。所以也许是一个 cfadmin 标签加载这些依赖项供 Docx4j 使用。
有什么有用的信息吗?
- 我从 errors/jar 文件中截取的一些屏幕截图:https://postimg.org/gallery/39zbmifbi/
- 有人遇到同样的问题:https://groups.google.com/forum/#!topic/lucee/LKRS7otUYjc
从版本 4.5 到版本 5 的更新不应该有这个结果。我们需要该库,否则我们必须返回到我们的客户不同意的旧版本。我真的认为最后一个 link 中有解决方案,但它是很难处理的信息。
对于 Lucee 5,您有以下三种选择:
1) 如果库是 OSGi 包,只需将它放在 {lucee-server}/bundles
2) 如果库不是 OSGi 包,就像 Docx4j 的情况一样,将 jar(及其依赖项,如果需要)放到 servlet 容器的类路径中,例如Tomcat 或 Jetty(或您使用的任何一个)。
"easiest" 就是将 jar 放在与 Lucee jar 相同的目录中。
另一种选择是更新容器的类路径,例如在 Tomcat.
的情况下将其添加到 {catalina-base}/conf/catalina.properties
中的 common.loader
3) 为您的 jar 指定自定义路径,作为 createObject(java...)
的参数,或通过 this.javaSettings
在 Application.cfc
中
至于缺少的依赖项,请务必使用包含所有依赖项的 jar,即 docx4j-community-3.3.1.zip
而不是 docx4j-3.3.1.jar
如果从 http://www.docx4java.org/downloads.html
下载
背景
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 包。您可以通过提供一个 manifest.xml 文件来制作一个包,该文件使 jar 文件成为一个包。但我不知道我应该怎么做。而且因为它始终适用于以前的版本,所以我认为解决方案可能非常简单。 IE。添加一行说明依赖关系。所以也许是一个 cfadmin 标签加载这些依赖项供 Docx4j 使用。
有什么有用的信息吗?
- 我从 errors/jar 文件中截取的一些屏幕截图:https://postimg.org/gallery/39zbmifbi/
- 有人遇到同样的问题:https://groups.google.com/forum/#!topic/lucee/LKRS7otUYjc
从版本 4.5 到版本 5 的更新不应该有这个结果。我们需要该库,否则我们必须返回到我们的客户不同意的旧版本。我真的认为最后一个 link 中有解决方案,但它是很难处理的信息。
对于 Lucee 5,您有以下三种选择:
1) 如果库是 OSGi 包,只需将它放在 {lucee-server}/bundles
2) 如果库不是 OSGi 包,就像 Docx4j 的情况一样,将 jar(及其依赖项,如果需要)放到 servlet 容器的类路径中,例如Tomcat 或 Jetty(或您使用的任何一个)。
"easiest" 就是将 jar 放在与 Lucee jar 相同的目录中。
另一种选择是更新容器的类路径,例如在 Tomcat.
的情况下将其添加到{catalina-base}/conf/catalina.properties
中的 common.loader
3) 为您的 jar 指定自定义路径,作为 createObject(java...)
的参数,或通过 this.javaSettings
Application.cfc
中
至于缺少的依赖项,请务必使用包含所有依赖项的 jar,即 docx4j-community-3.3.1.zip
而不是 docx4j-3.3.1.jar
如果从 http://www.docx4java.org/downloads.html