【发布时间】:2020-09-11 11:34:05
【问题描述】:
我在尝试创建 XSSFWorkbook 时收到错误消息
代码
currentCharterTemplate = 'UnusedTicketsWorkbook.xlsx';
currentFilePath = getDirectoryFromPath(getCurrentTemplatePath());
javaFile = createObject('java', 'java.io.File').init(currentFilePath & currentCharterTemplate);
excelFile = createObject('java', 'java.io.FileInputStream').init(javaFile);
xssfWorkbook = createObject('java', 'org.apache.poi.xssf.usermodel.XSSFWorkbook');
xssfWorkbook = createObject('java', 'org.apache.poi.xssf.usermodel.XSSFWorkbook').init(excelFile);
我也尝试了下面的行,我收到了同样的错误。
xssfWorkbook = createObject('java', 'org.apache.poi.xssf.usermodel.XSSFWorkbook');
错误
cannot load class through its string name, because no definition for the class with the specified name
[org.apache.poi.xssf.usermodel.XSSFWorkbook] could be found caused by (java.lang.ClassNotFoundException:org.apache.poi.xssf.usermodel.XSSFWorkbook;
java.lang.ClassNotFoundException:org.apache.poi.xssf.usermodel.XSSFWorkbook not found by lucee.core [46];)
我已经为 Lucee 安装了 cfspreadsheet 扩展,并重新启动了 Lucee 和我的电脑,我已经验证了 cfspreadsheet-3.0.1.jar 以及 lucee 包含的所有其他 jar 文件在 C:\lucee\tomcat\lucee-server\bundles 中可用。
如果我用 7-zip 打开 jar,我可以看到包含 poi-ooxml-3.15.jar。在那个罐子里,我可以浏览到C:\lucee\tomcat\lucee-server\bundles\cfspreadsheet-3.0.1.jar\poi-ooxml-3.15.jar\org\apache\poi\xssf\usermodel\XSSFWorkbook.class
错误消息中的lucee.core 让我认为它无法识别我的扩展程序中的 jar,但我找不到启用此功能的设置。
【问题讨论】:
-
什么版本的 Lucee?
-
我在
5.3.6.61,但降级到5.3.3.62并且遇到了同样的问题。 -
我刚刚测试了您的代码,并且似乎在您实际点击 cfspreadsheet 标记至少一次之前,扩展中的 OSGI 包实际上并没有被加载。运行 cfspreadsheet 标记后,服务器管理员中的 cfspreadsheet 包显示为“活动”,然后 createObject() 可以找到该类。
-
我也刚刚发现,如果您将“cfspreadsheet”作为第三个参数传递来创建强制 Lucee 加载它的对象(包名称)。
-
哇,你是对的。那行得通。谢谢布拉德!