【发布时间】:2012-05-30 23:10:14
【问题描述】:
我需要进行 docx 操作(查找/替换占位符和选中/取消选中复选框)。由于 ColdFusion 10 与 Java 集成得很好,我决定尝试使用 Java 库 docx4j,它基本上模仿了 OpenXML SDK(.net 平台)。
我有一个自定义文件夹中的 docx4j JAR,我通过 JavaSettings 在我的 Application.cfc 中设置了它(CF10 中的新功能,我在其他 JARS 中尝试过,它可以工作):
<cfcomponent output="false">
<cfset this.javaSettings =
{LoadPaths = ["/myJava/lib"], loadColdFusionClassPath = true, reloadOnChange= true,
watchInterval = 100, watchExtensions = "jar,class,xml"} />
</cfcomponent>
现在,我正在尝试使用这个示例:https://github.com/plutext/docx4j/blob/master/src/main/java/org/docx4j/samples/VariableReplace.java
但尝试调用 WordprocessingMLPackage 失败,函数 CreateObject() 说特定类不存在:
<cfset docObj = createObject("java","org.docx4j.openpackaging.packages.WordprocessingMLPackage") />
有什么想法吗?我不是一个真正的 Java 人,但是对于 docx 操作没有太多选择。
【问题讨论】:
-
该类不存在……嗯……好像没有找到。你确定jar文件在它应该在的地方吗?将 java 与 Coldfusion 7 一起使用,但现在看起来他们玩得很好。
-
发布完整的堆栈跟踪。但是,我会说我不久前尝试将 docxj 与 CF9 一起使用,但无法使其工作。这与 docx4j 无关。这似乎是一个相当不错的图书馆。我刚刚在 docx4j 的依赖项和 CF 的内部库之间遇到了太多的类加载器冲突。不幸的是,我无法弄清楚如何解决它们 - 即使使用 JavaLoader。不过我还没有用 CF10 试过,所以 YMMV。
-
使用 CF10 中的新 JavaSettings 属性,我在加载任何其他 JAR 文件和访问类时没有任何问题。我想也许是那个特定的类,所以我尝试了一个不同的类来创建一个对象(org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart),它工作得很好。我会一直玩弄它,试图真正看看我是否可以构建/操作一个文档。编辑:现在它正在工作,我认为问题是我没有提供 init() 构造函数。
-
酷!如果类加载器问题消失了,我可能会再试一试。 现在我对 CF10 感到非常兴奋 :)
标签: java coldfusion jar docx docx4j