java.lang.NoSuchMethodError: java.lang.String.isEmpty()Z

Posted

技术标签:

【中文标题】java.lang.NoSuchMethodError: java.lang.String.isEmpty()Z【英文标题】: 【发布时间】:2020-06-08 06:23:15 【问题描述】:

我遇到了错误:

我电脑上安装的java版本是1.8.0_91。

有趣的是,这个错误不会发生在我的电脑上,但在其他电脑上我试图运行我的程序。 该错误似乎与通过 apache poi 4.1.1 从 excel 表中查找信息的类的一行有关。

令人不安的代码行是这一行:if(!CellContent.isBlank()) 完整的类如下所示:

public class TrueExcelFind 



    XSSFSheet sheet;

    public TrueExcelFind() 

        try

        String fileName = "C:/Temp/exceltest.xlsx";

        InputStream input = new FileInputStream(fileName);

        XSSFWorkbook wb = new XSSFWorkbook(input);
        sheet = wb.getSheetAt(0);

         catch(FileNotFoundException ex) 
            System.err.println("File not found " + ex);
         catch(IOException ex)
            System.err.println("Unable to load " + ex);
        

    

        private static int findRow(XSSFSheet sheet, String cellContent) 
            for (Row row : sheet) 
                for (Cell cell : row) 
                    if (cell.getCellType() == CellType.STRING) 
                        if (cell.getRichStringCellValue().getString().trim().equals(cellContent)) 
                            return row.getRowNum();  
                        
                    

                    if (cell.getCellType().equals(CellType.NUMERIC))
                        if (DateUtil.isCellDateFormatted(cell)) 
                            System.out.println(cell.getDateCellValue());

                         else 
                            int lookup = (int) cell.getNumericCellValue();
                            String catcher = Integer.toString(lookup);

                            if(catcher.equals(cellContent))
                                return row.getRowNum();
                            
                        

                    

                
                           
            return 0;
        

        public String getVaule(String suchobjekt, String ID)

            int colnr;
            int rownr;

            switch (suchobjekt) 
                case "Karton":
                    colnr = 10; 
                    break;
                case "Palette":
                    colnr = 11; 
                    break;
                default:
                    String ERROR = "ERROR, no such search-term";
                    return ERROR;
            

            rownr = findRow(sheet, ID);

            XSSFRow row = sheet.getRow(rownr);
            XSSFCell cell = row.getCell(colnr);


            String CellContent = ""+cell;

            if(!CellContent.isBlank())

                System.out.println("Outcome: "+row.getCell(colnr));
                return CellContent;

             else 
                CellContent = "ERROR";
                System.out.println("Outcome: ERROR");
                return CellContent;   
            


        


我的程序做了什么: 我是另一个类,我正在尝试从文本字段中读取输入并检查 TrueExcelFind 类是否可以找到匹配的结果。如果是,请打印出具体答案。

我的猜测是该错误可能与 poi 库有关。这些库包含在可执行的 .jar 中。

有人知道这里出了什么问题吗?我被困在这一点上,不知道该怎么办。

【问题讨论】:

另一台PC上安装的Java版本是什么? String.isEmpty() 是在 Java 1.6 中添加的,因此您运行的 JRE 必须是 1.5 或更早版本。 两台电脑的版本都是 1.8.0_91 isBlank 在 Java 版本 11 之前不可用,但我想知道错误消息是关于 isEmpty 吗?? 我用isEmpty && equals(" ") 替换了isBlank(),现在它对我来说很好用。现在可以正确识别错误和正确的输入。似乎 isBlank() 是导致问题的原因。我仍然不知道为什么我得到了 错误。 【参考方案1】:

从java 1.6版本开始启用isEmpty功能,可能在另一台电脑上安装了java 5。

尝试在该电脑上运行 java -version 以丢弃它。

请记住,您始终可以使用本机验证,例如替换您的条件以在旧版本中运行:

if(!CellContent.isBlank())

 if(CellContent !=null || !"".equals(CellContent))

【讨论】:

isBlank() 是在 11 中添加的,这就是他正在使用的,而不是 isEmpry() 另一台电脑的java版本相同。但你的建议对我有点用。但是:现在,没有找到任何结果,而不是“错误”,没有返回任何内容。您知道为什么现在会出现这种情况,以及我该如何解决这个问题吗? :) 感谢您迄今为止的帮助! 检查语句是否:XSSFCell cell = row.getCell(colnr);返回一个对象,因为根据你告诉我的句子返回 null。以及它在文档中的搜索问题。 看来我只需要替换!CellContent.isBlank()。我用!CellContent.isEmpty() && !CellContent.equals(" ") 替换了它,但我的回报不是双向的。非常感谢您让我朝着正确的方向前进! :)

以上是关于java.lang.NoSuchMethodError: java.lang.String.isEmpty()Z的主要内容,如果未能解决你的问题,请参考以下文章