java .lang.NoSuchMethodError: java .lang.String.isEmpty () Z - PullRequest
0 голосов
/ 24 февраля 2020

Я столкнулся с ошибкой:

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

Установленная версия java на моем p c - 1.8.0_91.

Забавная вещь является то, что эта ошибка не возникает на моем p c, но на других p c я пытался запустить свою программу. Ошибка, кажется, связана со строкой из класса, который ищет информацию из таблицы Excel через apache poi 4.1.1.

Эта строка кода тревожная: 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 найти соответствующий результат. Если это так, распечатайте указанный c ответ.

Я предполагаю, что ошибка может быть связана с библиотеками poi. Библиотеки включены в исполняемый файл .jar.

Кто-нибудь имеет представление, что здесь не так? Я застрял в этой точке и не знаю, что делать.

1 Ответ

0 голосов
/ 24 февраля 2020

Функция isEmpty включена с версии 1.6 java, возможно, в другой версии p c установлена ​​java 5.

Попробуйте запустить java -версию в этой версии. c чтобы отменить это.

И помните, что вы всегда можете использовать встроенную проверку, например, замену вашего условия для запуска в более старых версиях:

if(!CellContent.isBlank()){

для

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