pentaho/pentaho-kettle · error · KettleException

ExcelInput.Exception.MissingRequiredFiles

ExcelInput.Exception.MissingRequiredFiles

Error message

ExcelInput.Exception.MissingRequiredFiles

What it means

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.

Solutions

  1. Verify the file path/wildcard in the Excel Input step's Files tab and fix it
  2. Ensure the upstream step/job that creates the files runs before this transformation
  3. Enable 'Ignore errors' and configure a non-existent-file error handler if missing files are expected
  4. Check the execution node actually has access to the path (mounted drive, working directory)
Defensive patterns

Strategy: try-catch

Validate before calling

// Pre-check files exist before running the transformation
FileObject f = KettleVFS.getInstance(bowl).getFileObject(path, transMeta);
if (!f.exists()) throw new FileNotFoundException(path);

Try / catch

try {
  transformation.execute();
} catch (KettleException e) {
  if (e.getMessage().contains("MissingRequiredFiles")) {
    // re-check inputs, trigger producer job, or re-run later
  } else { throw e; }
}

Prevention

When it happens

Trigger: One or more files returned by data.files.getNonExistantFiles() do not exist at processRow time AND meta.isErrorIgnored() is false.

Common situations: 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.

Understand the failure class

Background: "File not found" and ENOENT errors: why libraries can't find a file that should exist — this error's family across 50 libraries.

Related errors


AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13). Data as JSON: /api/errors/ef434fbe0ef3eca2. Report an issue: GitHub.

Appendix: source

Thrown at plugins/excel/core/src/main/java/org/pentaho/di/trans/steps/excelinput/ExcelInput.java:479

    }
  }

  private void handleMissingFiles() throws KettleException {
    List<FileObject> nonExistantFiles = data.files.getNonExistantFiles();

    if ( !nonExistantFiles.isEmpty() ) {
      String message = FileInputList.getRequiredFilesDescription( nonExistantFiles );
      if ( log.isBasic() ) {
        logBasic( BaseMessages.getString( PKG, "ExcelInput.Log.RequiredFilesTitle" ), BaseMessages.getString(
          PKG, "ExcelInput.Warning.MissingFiles", message ) );
      }

      if ( meta.isErrorIgnored() ) {
        for ( FileObject fileObject : nonExistantFiles ) {
          data.errorHandler.handleNonExistantFile( fileObject );
        }
      } else {
        throw new KettleException( BaseMessages.getString(
          PKG, "ExcelInput.Exception.MissingRequiredFiles", message ) );
      }
    }

    List<FileObject> nonAccessibleFiles = data.files.getNonAccessibleFiles();
    if ( !nonAccessibleFiles.isEmpty() ) {
      String message = FileInputList.getRequiredFilesDescription( nonAccessibleFiles );
      if ( log.isBasic() ) {
        logBasic( BaseMessages.getString( PKG, "ExcelInput.Log.RequiredFilesTitle" ), BaseMessages.getString(
          PKG, "ExcelInput.Log.RequiredFilesMsgNotAccessible", message ) );
      }

      if ( meta.isErrorIgnored() ) {
        for ( FileObject fileObject : nonAccessibleFiles ) {
          data.errorHandler.handleNonAccessibleFile( fileObject );
        }
      } else {
        throw new KettleException( BaseMessages.getString(

View on GitHub (pinned to f3058517a1)