Java ApachePOI:打开模板、写入、另存为。崩溃并创建损坏的文件

Java ApachePOI:打开模板、写入、另存为。崩溃并创建损坏的文件,java,excel,apache,apache-poi,Java,Excel,Apache,Apache Poi,我一直在写一个程序,将名字写在名册上,并编写了查找和排序的大多数方法。 此方法的目标是打开现有文件,写入单元格,然后另存为其他文件。 我认为问题可能在于模板文件,因为它由两张纸组成。一张纸收集所有的名字,第二张纸上有一个带有文本框的图像,文本框链接到第一页,打印到文本框上 public static void FindTemplate(String Session) throws FileNotFoundException, IOException { if(Session.toLowe

我一直在写一个程序,将名字写在名册上,并编写了查找和排序的大多数方法。 此方法的目标是打开现有文件,写入单元格,然后另存为其他文件。 我认为问题可能在于模板文件,因为它由两张纸组成。一张纸收集所有的名字,第二张纸上有一个带有文本框的图像,文本框链接到第一页,打印到文本框上

public static void FindTemplate(String Session) throws FileNotFoundException, IOException
{
    if(Session.toLowerCase().contains("Level 1".toLowerCase())) 
         // generic roster as an else
    {

        FileInputStream In = new FileInputStream("Directory\\Templates\\A Template.xls");
        HSSFWorkbook wb = new HSSFWorkbook(In);
        HSSFSheet sheet = wb.getSheetAt(0);
        Cell cell = null; 
        cell = sheet.getRow(0).getCell(0);


        cell.setCellValue("Found it");//just as a test for now
        In.close();


        wb.write(new FileOutputStream("WA1.xls"));
        wb.close();


    }
}
当我运行它时,我得到一个我不理解的大错误。错误位于wb.writenew FileOutputStreamWA1.xls;我以前用其他方法保存过类似的文件。也会创建一个新文件,但该文件已损坏

Error:
 WAException in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/collections4/bidimap/TreeBidiMap
at org.apache.poi.hpsf.Section.<init>(Section.java:178)
at org.apache.poi.hpsf.MutableSection.<init>(MutableSection.java:41)
at org.apache.poi.hpsf.PropertySet.init(PropertySet.java:494)
at org.apache.poi.hpsf.PropertySet.<init>(PropertySet.java:196)
at org.apache.poi.hpsf.MutablePropertySet.<init>(MutablePropertySet.java:44)
at org.apache.poi.hpsf.SpecialPropertySet.<init>(SpecialPropertySet.java:47)
at org.apache.poi.hpsf.DocumentSummaryInformation.<init>(DocumentSummaryInformation.java:99)
at org.apache.poi.hpsf.PropertySetFactory.create(PropertySetFactory.java:116)
at org.apache.poi.POIDocument.getPropertySet(POIDocument.java:236)
at org.apache.poi.POIDocument.getPropertySet(POIDocument.java:197)
at org.apache.poi.POIDocument.readPropertySet(POIDocument.java:175)
at org.apache.poi.POIDocument.readProperties(POIDocument.java:158)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.updateEncryptionInfo(HSSFWorkbook.java:2295)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.getBytes(HSSFWorkbook.java:1506)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.write(HSSFWorkbook.java:1428)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.write(HSSFWorkbook.java:1414)
at rosterWrite.FindTemplate(rosterWrite.java:79)
at rosterWrite.main(rosterWrite.java:24)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.collections4.bidimap.TreeBidiMap
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 18 more

错误消息是由以下原因引起的:java.lang.ClassNotFoundException:org.apache.commons.collections4.bidimap.TreeBidiMap,这意味着您的项目缺少apache commons collections库的TreeBidiMap类。如果您使用maven,只需将commons集合库添加到pom.xml中,如图所示。如果没有,您需要从下载库并将其放到您的项目中。

NoClassDefFoundError:org/apache/commons/collections4/bidimap/TreeBidiMap-您没有安装所有必要的jar文件。看起来POI需要Commons Collections 4。你在使用Maven管理依赖关系吗?我在这方面工作了很长时间,这就是解决方案!哇!谢谢你的帮助!