背景
Docx4j是一个Java库,它可以以Java的形式使用Microsoft文档。我们以前的应用程序是用Cold聚变编写的,它已经正确地使用了这个库。然后我们转向了较新的软件Lucee。这已经给Docx4j库的实现带来了问题。它最终通过将带有所有依赖项的Docx4j jar放入文件夹“wwwroot/WEB/lucee/lib”来工作。在重新启动Lucee服务之后,它正确地加载了jar。还有一些其他的问题,但重要的是jar被加载到环境中。
,那么现在有什么问题?
现在我们有了一个新项目,安装在新的Lucee5.0上。一切顺利,只有docx4j给出了问题。在代码中使用docx4j时,会出现一个错误,说明没有加载Docx4j日志工厂。这是Docx4j使用的依赖项。我发现了一些信息,即Lucee5.0在外部jar库中的工作方式不同,并且它需要是一个OSGi框架包。但是,再一次,这让我们很难理解Lucee需要什么才能让它发挥作用
我在努力实现
每次使用Cold聚变/Lucee时,都是jar文件Docx4j,以及所有依赖jar文件。所以我把所有这些jar文件放在一个文件夹中,Cold聚变读取,然后它就能工作了。所以,我想说的是,没有设置文件或类似的东西(可能在jar文件本身中?)
我试过什么?
所以我当然试了几件事:
,我认为可能的解决方案是什么?
我发现了Lucee5.0在jar库中做了一些不同的事情。现在,它希望成为一个OSGi包。您可以通过提供一个使jar文件成为一个包的manifest.xml文件来构建一个包。但我不知道该怎么做。因为它总是适用于以前的版本,所以我认为这个解决方案可能很简单。也就是说,添加一行来声明依赖关系。因此,可能是一个cfadmin标记,它加载这些依赖项供Docx4j使用。
什么是有用的信息?
从4.5版到5版的更新结果不应该是这样的。我们需要库,否则我们必须回到旧版本,我们的客户不同意。我真的认为最后一个链接有它的解决方案,但它是相当困难的信息处理。
发布于 2016-10-14 16:39:16
对于Lucee 5,您有三种选择:
1)如果库是OSGi包,只需将其放在{lucee-server}/bundles中即可
2)如果库不是OSGi包,就像Docx4j一样,将jar (以及它的依赖项(如果需要)放到servlet容器的类路径中,例如Tomcat或Jetty (或您使用的任何东西)。
“最简单”的方法是将jar放在与Lucee相同的目录中。
另一个选项是更新容器的类路径,例如,在Tomcat的情况下,将它添加到common.loader中的{catalina-base}/conf/catalina.properties中。
3)为jars指定一个自定义路径,可以作为createObject(java...)的参数,也可以在Application.cfc中通过this.javaSettings指定
对于缺少的依赖项,请确保使用包含所有依赖项的jar,即如果从docx4j-community-3.3.1.zip下载,则使用docx4j-3.3.1.jar而不是docx4j-3.3.1.jar。
https://stackoverflow.com/questions/40046948
复制相似问题