Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Lucee在安装cfspreadsheet extension后找不到XSSFWorkbook_Java_Lucee - Fatal编程技术网

Java Lucee在安装cfspreadsheet extension后找不到XSSFWorkbook

Java Lucee在安装cfspreadsheet extension后找不到XSSFWorkbook,java,lucee,Java,Lucee,尝试创建XSSFWorkbook 代码 我也尝试了下面的一行,我收到了相同的错误 xssfWorkbook = createObject('java', 'org.apache.poi.xssf.usermodel.XSSFWorkbook'); 错误 我已经为Lucee安装了cfspreadsheet扩展,并重新启动了Lucee和我的计算机,我已经验证了cfspreadsheet-3.0.1.jar可以在C:\Lucee\tomcat\Lucee server\bundles以及Lucee附

尝试创建
XSSFWorkbook

代码

我也尝试了下面的一行,我收到了相同的错误

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

我已经为Lucee安装了cfspreadsheet扩展,并重新启动了Lucee和我的计算机,我已经验证了
cfspreadsheet-3.0.1.jar
可以在
C:\Lucee\tomcat\Lucee server\bundles
以及Lucee附带的所有其他jar文件中找到

如果我用7-zip打开jar,我可以看到
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,但我找不到一个设置来启用它。

我刚刚测试了您的代码,似乎扩展中的OSGI捆绑包在您实际点击cfspreadsheet标记至少一次之后才真正加载。一旦我运行了cfspreadsheet标记,服务器管理中的cfspreadsheet bundle将显示为active,然后
createObject()
可以找到该类

//强制Lucee激活捆绑包
电子表格操作=“read”src=“#expandPath('UnusedTicketsWorkbook.xlsx')#“name=”test”;
xssf工作簿=createObject('java','org.apache.poi.xssf.usermodel.xssf工作簿');

我还发现,如果您将“cfspreadsheet”作为第三个参数传递,以创建强制Lucee加载的对象(bundle name)

//显式引用捆绑包名称
xssf工作簿=createObject('java','org.apache.poi.xssf.usermodel.xssf工作簿','cfspreadsheet');

值得注意的是,该扩展将POI罐重新打包在自己设计的新包中,这就是为什么bundle名称是
cfspreadsheet

Lucee的哪个版本?我在
5.3.6.61
上,但降级到
5.3.3.62
,并且出现了同样的问题。我刚刚测试了您的代码,似乎在您至少一次真正点击cfspreadsheet标记之前,扩展中的OSGI bundle并没有实际加载。一旦我运行了cfspreadsheet标记,服务器管理中的cfspreadsheet bundle显示为“active”,然后createObject()就可以找到该类。我还发现,如果将“cfspreadsheet”作为创建对象(bundle name)的第三个参数传递,则会强制Lucee加载它。哇,你说得对。行了,谢谢你,布拉德!
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];)