{"record":{"id":"ef434fbe0ef3eca2","repo":"pentaho/pentaho-kettle","slug":"excelinput-exception-missingrequiredfiles","errorCode":"ExcelInput.Exception.MissingRequiredFiles","errorMessage":"ExcelInput.Exception.MissingRequiredFiles","messagePattern":"ExcelInput\\.Exception\\.MissingRequiredFiles","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"plugins/excel/core/src/main/java/org/pentaho/di/trans/steps/excelinput/ExcelInput.java","lineNumber":479,"sourceCode":"    }\n  }\n\n  private void handleMissingFiles() throws KettleException {\n    List<FileObject> nonExistantFiles = data.files.getNonExistantFiles();\n\n    if ( !nonExistantFiles.isEmpty() ) {\n      String message = FileInputList.getRequiredFilesDescription( nonExistantFiles );\n      if ( log.isBasic() ) {\n        logBasic( BaseMessages.getString( PKG, \"ExcelInput.Log.RequiredFilesTitle\" ), BaseMessages.getString(\n          PKG, \"ExcelInput.Warning.MissingFiles\", message ) );\n      }\n\n      if ( meta.isErrorIgnored() ) {\n        for ( FileObject fileObject : nonExistantFiles ) {\n          data.errorHandler.handleNonExistantFile( fileObject );\n        }\n      } else {\n        throw new KettleException( BaseMessages.getString(\n          PKG, \"ExcelInput.Exception.MissingRequiredFiles\", message ) );\n      }\n    }\n\n    List<FileObject> nonAccessibleFiles = data.files.getNonAccessibleFiles();\n    if ( !nonAccessibleFiles.isEmpty() ) {\n      String message = FileInputList.getRequiredFilesDescription( nonAccessibleFiles );\n      if ( log.isBasic() ) {\n        logBasic( BaseMessages.getString( PKG, \"ExcelInput.Log.RequiredFilesTitle\" ), BaseMessages.getString(\n          PKG, \"ExcelInput.Log.RequiredFilesMsgNotAccessible\", message ) );\n      }\n\n      if ( meta.isErrorIgnored() ) {\n        for ( FileObject fileObject : nonAccessibleFiles ) {\n          data.errorHandler.handleNonAccessibleFile( fileObject );\n        }\n      } else {\n        throw new KettleException( BaseMessages.getString(","sourceCodeStart":461,"sourceCodeEnd":497,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/plugins/excel/core/src/main/java/org/pentaho/di/trans/steps/excelinput/ExcelInput.java#L461-L497","documentation":"handleMissingFiles checks the list of files that did not exist when the step tried to open them. If error handling is not configured to ignore errors, the step aborts the transformation with a KettleException summarizing all missing required files.","triggerScenarios":"One or more files returned by data.files.getNonExistantFiles() do not exist at processRow time AND meta.isErrorIgnored() is false.","commonSituations":"Typo or stale path in the step's file/wildcard settings; files produced by an upstream job step that did not run; files deleted or renamed between planning and execution; running on an agent whose working directory differs.","solutions":["Verify the file path/wildcard in the Excel Input step's Files tab and fix it","Ensure the upstream step/job that creates the files runs before this transformation","Enable 'Ignore errors' and configure a non-existent-file error handler if missing files are expected","Check the execution node actually has access to the path (mounted drive, working directory)"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"// Pre-check files exist before running the transformation\nFileObject f = KettleVFS.getInstance(bowl).getFileObject(path, transMeta);\nif (!f.exists()) throw new FileNotFoundException(path);","typeGuard":null,"tryCatchPattern":"try {\n  transformation.execute();\n} catch (KettleException e) {\n  if (e.getMessage().contains(\"MissingRequiredFiles\")) {\n    // re-check inputs, trigger producer job, or re-run later\n  } else { throw e; }\n}","preventionTips":["Verify file paths/wildcards in the Files tab against the execution node","Run producing steps/jobs before the Excel Input transformation","Use variables/parameters for environment-specific paths instead of absolutes"],"tags":["file","kettle","excel"],"backgroundTag":"file-not-found","analyzedSha":"f3058517a153da500bf4551f46d79b91bf8ec552","analyzedAt":"2026-09-13T14:04:16.340Z","contentChangedAt":"2026-09-13T14:04:16.340Z","schemaVersion":2},"datasetVersion":"2026-09-20T23:17:15.980Z"}