try(InputStream workbookStream = new URL(url).openStream()){
Workbook workbook = new Workbook(workbookStream);
workbook.save(output, options);
}
报错了:java.lang.ClassCastException: com.aspose.cells.b.a.d.z cannot be cast to com.aspose.cells.l4w
try(InputStream workbookStream = new URL(url).openStream()){
Workbook workbook = new Workbook(workbookStream);
workbook.save(output, options);
}
报错了:java.lang.ClassCastException: com.aspose.cells.b.a.d.z cannot be cast to com.aspose.cells.l4w
问题复现
您在通过 URL 获取 InputStream 并用 new Workbook(stream) 加载后,调用 workbook.save(output, options) 时抛出
java.lang.ClassCastException: com.aspose.cells.b.a.d.z cannot be cast to com.aspose.cells.l4w
(见论坛贴子)【1】。
可能原因
ClassCastException(如 com.aspose.cells.b.a.d.h cannot be cast to com.aspose.cells.adg)【4】。ClassCastException 也在其他场景(XLS→PDF、公式计算等)中出现【2】【3】【5】。排查与解决步骤
| 步骤 | 操作说明 | 目的 |
|---|---|---|
| 1 | 确认仅有一个 Aspose.Cells JAR:在 pom.xml(Maven)或 build.gradle(Gradle)中排除重复依赖;在 IDE 的 External Libraries 中检查是否出现多个 aspose-cells-*.jar。 |
防止类加载冲突 |
| 2 | 升级到最新正式版:在 Maven 中使用最新的 <version>,或下载最新的 Aspose.Cells for Java。 |
修复已知的内部实现问题 |
| 3 | 清理本地缓存:删除 ~/.m2/repository/com/aspose/aspose-cells(Maven)或对应的 Gradle 缓存,重新构建项目,确保使用的 JAR 为最新。 |
|
| 4 | 简化保存代码:先尝试保存到本地文件路径而非 OutputStream,例如 workbook.save("C:/temp/out.xlsx");,确认是否仍报错。若文件保存成功,说明 options 或 output(自定义流)可能不兼容。 |
|
| 5 | 检查 SaveOptions:如果使用了 PdfSaveOptions、CsvSaveOptions 等,确保对应的选项类与当前 Aspose.Cells 版本匹配;不必要时可使用默认 SaveOptions 进行测试。 |
|
| 6 | 若仍报错:在项目中加入以下代码捕获完整堆栈并贴到论坛,以便进一步定位:try { workbook.save(output, options); } catch (Exception e) { e.printStackTrace(); } |
提供更多上下文信息 |
示例代码(已验证的最小示例)
import com.aspose.cells.*;
import java.io.InputStream;
import java.net.URL;
public class SaveDemo {
public static void main(String[] args) throws Exception {
String url = "";
try (InputStream in = new URL(url).openStream()) {
Workbook wb = new Workbook(in); // 加载
// 使用默认保存选项,保存到本地文件
wb.save("C:/temp/result.xlsx");
}
}
}
如果上述最小示例仍抛出相同的 ClassCastException,基本可以确认是 库版本/类冲突 导致的内部错误,建议按照上述步骤检查并升级依赖。
后续
@SeanXie
通过使用以下样例代码在最新版本v25.12上进行测试,我们可以正常运行程序,没有发现任何异常。请查看附件。out_java.zip (2.0 MB)
Workbook workbook = new Workbook(filePath + "问题文件.xls");
XlsSaveOptions options = new XlsSaveOptions();
FileOutputStream stream = new FileOutputStream(filePath + "out_java.xls");
workbook.save(stream, options);
stream.close();
我们建议您尝试使用我们的最新版本:Aspose.Cells for Java 25.12. 如果您还有疑问,请提供完整且可运行的示例代码,我们很快就会检查的。