java.lang.ClassNotFoundException:jxl.read.biff.BiffException

时间:2013-10-10 05:36:25

标签: java excel jxl classnotfound

在我的J2EE Web项目中,我有一个简单的JSP(HomeScreen.jsp)和一个servlet类(HomeScreenServlet.java)。这个类从另一个类(PDFAwt)调用非静态方法(PDFAwt1),后者又通常会从许多不同的类中调用许多其他方法。

当我尝试创建PDFAwt的对象以调用PDFAwt1()时,我得到一个例外:

java.lang.ClassNotFoundException: jxl.read.biff.BiffException
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1360)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1206)
...

以下是PDFAwt1()

的一些预览
CreateExcelFile cef = new CreateExcelFile();

ImageConversion.setupPDFToPNG(ReferencePath);
ImageConversion.setupPDFToPNG(NewPath);

File folder = new File(ReferencePath + "/png");
File[] f = folder.listFiles();
File folder1 = new File(NewPath + "/png");
File[] f1 = folder1.listFiles();
...

CreateExcelFile()

import jxl.Workbook;
import jxl.format.Colour;
...
public class CreateExcelFile {
  public CreateExcelFile() {
    try {
      if (!new File("LabelsTemplate.xls").exists()) {
        WritableWorkbook workbook = Workbook.createWorkbook(new File("LabelsTemplate.xls"));
        WritableSheet sheet = workbook.createSheet("Sheet1", 0);
        ... 
    }
  }
}

无法找到问题的确切位置..请帮助..

3 个答案:

答案 0 :(得分:2)

在类路径中缺少jar,如果您使用任何IDE,请在运行应用程序之前下载相应的jar并将其设置在构建路径中。 如果您没有使用任何IDE,请将相应的jar添加到lib的{​​{1}}文件夹中。

答案 1 :(得分:0)

您的代码过于依赖某些jars,而您在类路径中缺少这些代码。 Maven是避免此类传递依赖的好工具。如果您不使用maven,那么您需要找到您正在使用的jars,需要所有其他jars。作为第一步,尝试找到包含以下类的jar:

jxl.read.biff.BiffException

答案 2 :(得分:0)

public class BiffException extends JXLException  

读取biff文件时抛出异常

此异常有许多消息应提供有关原因的一些信息:

excelFileNotFound        
excelFileTooBig         
expectedGlobals         
passwordProtected         
streamNotFound         
unrecognizedBiffVersion
unrecognizedOLEFile  

打印信息以查看确切的问题。

你可以找到丢失的jar here

顾名思义,ClassNotFoundException在Java中是java.lang.Exception的子类,当 Java虚拟机尝试加载特定类并且未找到时类路径中请求的类。

关于此异常的另一个重点是,它是一个已检查的异常,并且您需要在使用可能通过使用try在Java中抛出ClassNotFoundException的方法时提供显式异常处理-catch块或使用throws子句。

Oracle docs

public class ClassNotFoundException
 extends ReflectiveOperationException

当应用程序尝试使用以下命令通过其字符串名称加载类时抛出:

  • 类Class。中的forName方法。
  • ClassLoader类中的findSystemClass方法。
  • ClassLoader类中的loadClass方法。

但是找不到具有指定名称的类的定义。