当前位置: 首页 > 知识库问答 >
问题:

如何解决java。lang.NoSuchFieldError:在java中返回_NULL_和_BLANK

山翼
2023-03-14
public class SpreadsheetGenerator {
void dailyreport( Connection con) throws SQLException, IOException {
    Statement statement = con.createStatement();
    ResultSet resultSet = null;
    try {
        resultSet = statement.executeQuery("select * from ssa_msg_daily");
    } catch (Exception e) {

    } finally {
        ResultSet resultSet = statement.executeQuery("select * from ssa_msg_daily");
        XSSFWorkbook workbook = new XSSFWorkbook();
        XSSFSheet spreadsheet = workbook.createSheet("employe db");

        XSSFRow row = spreadsheet.createRow(1);
        XSSFCell cell;
        cell = row.createCell(1);
        cell.setCellValue("id");
        cell = row.createCell(2);
        cell.setCellValue("Sender");
        cell = row.createCell(3);
        cell.setCellValue("Service");
        cell = row.createCell(4);
        cell.setCellValue("Message_identifier");
        cell = row.createCell(5);
        cell.setCellValue("Date");
        cell = row.createCell(6);
        cell.setCellValue("Incoming");
        cell = row.createCell(7);
        cell.setCellValue("Outgoing");
        int i = 2;

        while (resultSet.next()) {
            row = spreadsheet.createRow(i);
            cell = row.createCell(1);
            cell.setCellValue(resultSet.getInt("id"));
            cell = row.createCell(2);
            cell.setCellValue(resultSet.getString("Sender"));
            cell = row.createCell(3);
            cell.setCellValue(resultSet.getString("Service"));
            cell = row.createCell(4);
            cell.setCellValue(resultSet.getString("Message_identifier"));
            cell = row.createCell(5);
            cell.setCellValue(resultSet.getDate("Date"));
            cell = row.createCell(6);
            cell.setCellValue(resultSet.getString("Incoming"));
            cell = row.createCell(7);
            cell.setCellValue(resultSet.getString("Outgoing"));
            i++;
        }

        FileOutputStream out = new FileOutputStream(new File("exceldatabase.xlsx"));
        workbook.write(out);
        out.close();
        System.out.println("exceldatabase.xlsx written successfully");
    }
    }


}

这里ssa_msg_daily在表中包含空值或空值,因此
在编译时,我得到的错误如下:

线程“main”java中出现异常。lang.NoSuchFieldError:返回_NULL_和_BLANK

在@XSSF工作簿=新建XSSF工作簿()时发生;我如何处理这种情况?我正在使用resultset使用ApachePOI转换为spreedsheet

共有2个答案

濮君植
2023-03-14

也许你会用“try”和“catch”来尝试。

public class SpreadsheetGenerator {
void dailyreport( Connection con) throws SQLException, IOException {
Statement statement = con.createStatement();
ResultSet resultSet = null;
try {
    resultSet = statement.executeQuery("select * from ssa_msg_daily");
} catch (Exception e) {

} 
    //ResultSet resultSet = statement.executeQuery("select * from ssa_msg_daily");
    XSSFWorkbook workbook = new XSSFWorkbook();
    XSSFSheet spreadsheet = workbook.createSheet("employe db");

    XSSFRow row = spreadsheet.createRow(1);
    XSSFCell cell;
    cell = row.createCell(1);
    cell.setCellValue("id");
    cell = row.createCell(2);
    cell.setCellValue("Sender");
    cell = row.createCell(3);
    cell.setCellValue("Service");
    cell = row.createCell(4);
    cell.setCellValue("Message_identifier");
    cell = row.createCell(5);
    cell.setCellValue("Date");
    cell = row.createCell(6);
    cell.setCellValue("Incoming");
    cell = row.createCell(7);
    cell.setCellValue("Outgoing");
    int i = 2;

    if(resultSet!=null){
    while (resultSet.next()) {
        row = spreadsheet.createRow(i);
        cell = row.createCell(1);
        cell.setCellValue(resultSet.getInt("id"));
        cell = row.createCell(2);
        cell.setCellValue(resultSet.getString("Sender"));
        cell = row.createCell(3);
        cell.setCellValue(resultSet.getString("Service"));
        cell = row.createCell(4);
        cell.setCellValue(resultSet.getString("Message_identifier"));
        cell = row.createCell(5);
        cell.setCellValue(resultSet.getDate("Date"));
        cell = row.createCell(6);
        cell.setCellValue(resultSet.getString("Incoming"));
        cell = row.createCell(7);
        cell.setCellValue(resultSet.getString("Outgoing"));
        i++;
    }}

    FileOutputStream out = new FileOutputStream(new File("exceldatabase.xlsx"));
    workbook.write(out);
    out.close();
    System.out.println("exceldatabase.xlsx written successfully");
}
}
 

}
王建华
2023-03-14

您遇到了类路径问题。您的类路径上有Apache POI项目的混合版本。这种版本组合导致其中一个类的较新版本尝试与较旧版本之一通信,但它们不兼容。

解决方案是检查类路径(因此,如果您使用的是maven、gradle或其他依赖系统,那么就是依赖链),并对其进行修复。这可能很简单,就像在构建系统上运行“clean”命令一样。

NB:您的代码风格非常糟糕——不要在最终块中放置大量代码。此外,您的粘贴中有99.9%是转移注意力的。这一行已经会导致您的问题:

XSSFWorkbook workbook = new XSSFWorkbook();

其余的都无关紧要。

 类似资料:
  • 问题内容: 我正在尝试运行Java应用程序,但出现此错误: 冒号到达后,缺少该类的位置。但是,我知道该位置不存在,因为该类位于其他位置。如何更新该课程的路径?它与类路径有关吗? 问题答案: 类路径是要从中加载类的位置的列表。 这些“位置”可以是目录,也可以是jar文件。 对于目录,JVM将遵循预期的模式加载类。如果我的类路径中有目录C:/ myproject / classes,并且尝试加载类co

  • 线程“main”java.lang.ArithmeticException中出现异常:/by zero at run.prg34.main(prg34.java:8) 如何在java中解决上述算法异常?

  • 问题内容: 我正在尝试在Java程序中阅读标准输入。我期望一系列数字后跟换行符,例如: 当通过eclipse内置控制台提供输入时,一切都会顺利进行。但是,使用Windows命令行时,程序将输出: 我的代码是: 有什么线索吗? 问题答案: 得到a 表示相关对象已到达EOF(文件末尾),或者换句话说,它们无法再获得任何标准输入。现在,您的代码明显的问题是: 的每个方法调用都会创建一个 新的 。 每个这

  • 首先,我看到有其他帖子也有这个问题,但没有人有和我一样的问题,即签名。verify()意外返回了false。 这是我的代码: 下面是我如何读入键(如果需要):

  • 我正在尝试用Java解决一个ODE,到目前为止,我已经尝试了两个不同的库。我最信任的是Apache Commons Math,然而,即使是简单的问题,我似乎也得不到正确的解。 当我在Mathematica中求解系统时,我得到了这样的结果: 如果我用Apache Commons Math中的Dormand-Prince8(5,3)求解器求解,我会得到以下结果:

  • 问题内容: 在Java中是否可以从方法返回两个或多个值到main?如果是这样,有可能吗?如果没有,我们怎么办? 问题答案: 你可以使用Java返回Class的对象。 如果要返回多个相关的值,则将它们封装到一个类中,然后返回该类的对象是有意义的。 如果要返回不相关的值,则可以使用Java的内置容器类(例如Map,List,Set等)。有关更多详细信息,请检查java.util包的JavaDoc。