微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

安装cfspreadsheet扩展名后,Lucee找不到XSSFWorkbook

如何解决安装cfspreadsheet扩展名后,Lucee找不到XSSFWorkbook

尝试创建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中包含C:\lucee\tomcat\lucee-server\bundles以及lucee随附的所有其他jar文件。>

如果我打开带有7-zip的罐子,可以看到其中包含poi-ooxml-3.15.jar。在该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,但是找不到启用此功能的设置。

解决方法

我刚刚测试了您的代码,看来直到您至少实际点击cfspreadsheet标记一次,扩展程序的OSGI捆绑包才真正加载。运行cfspreadsheet标记后,服务器管理员中的cfspreadsheet捆绑包将显示为活动,然后createObject()可以找到该类。

// Force Lucee to activate the bundle
spreadsheet action="read" src="#expandPath( 'UnusedTicketsWorkbook.xlsx' )#" name="test";

xssfWorkbook = createObject('java','org.apache.poi.xssf.usermodel.XSSFWorkbook');

我还算了一笔账,如果您将'cfspreadsheet'作为第三个参数传递来创建对象(捆绑名称)来强制Lucee加载它。

// Explicitly reference the bundle name
xssfWorkbook = createObject('java','org.apache.poi.xssf.usermodel.XSSFWorkbook','cfspreadsheet');

值得注意的是,该扩展将POI jar重新包装到了自己设计的新捆绑包中,这就是为什么捆绑包名称为cfspreadsheet的原因。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。