pentaho/pentaho-kettle · error · KettleException

Following required files are missing:

Error message

Following required files are missing: 

What it means

BaseFileInputStepUtils.handleMissingFiles() collects the list of input files that do not exist and throws a KettleException listing them when errors are not ignored. File-input steps abort rather than continue when required files are absent and no error handling is configured.

Solutions

  1. Create/restore the missing files listed in the exception message at the expected paths.
  2. Fix the filename/wildcard or variable value in the step's File tab.
  3. Enable 'Ignore missing files' / configure step error handling so nonexistent files are tolerated.
  4. Verify variable substitution (${Internal...}) resolves correctly in the execution environment.

Example fix

// before
String file = "/data/${TODAY}.csv"; // variable unset -> path /data/${TODAY}.csv missing
// after
String file = "/data/" + getVariable("TODAY", "") + ".csv"; // resolves to existing file
Defensive patterns

Strategy: validation

Validate before calling

for (String file : files) {
  if (!new java.io.File(file).exists()) {
    throw new IllegalStateException("Missing input file: " + file);
  }
}

Try / catch

try {
  trans.execute(null);
} catch (KettleException e) {
  if (e.getMessage().startsWith("Following required files are missing")) {
    // provision files or adjust the file pattern, then retry
  } else { throw e; }
}

Prevention

When it happens

Trigger: Running a text-file-input/CSV step whose resolved file list contains nonexistent files while the step's error-handling setting is not 'ignore missing files'.

Common situations: Wildcard patterns matching nothing; files removed or renamed after the transformation was designed; wrong directory; running on an agent where the files were not deployed; variable/parameter pointing to a wrong path.

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/ceeeda8b454fd329. Report an issue: GitHub.

Appendix: source

Thrown at engine/src/main/java/org/pentaho/di/trans/steps/file/BaseFileInputStepUtils.java:49

 * @author Alexander Buloichik
 */
public class BaseFileInputStepUtils {

  public static void handleMissingFiles( FileInputList files, LogChannelInterface log, boolean isErrorIgnored,
      FileErrorHandler errorHandler ) throws KettleException {
    List<FileObject> nonExistantFiles = files.getNonExistantFiles();

    if ( !nonExistantFiles.isEmpty() ) {
      String message = FileInputList.getRequiredFilesDescription( nonExistantFiles );
      if ( log.isBasic() ) {
        log.logBasic( "Required files", "WARNING: Missing " + message );
      }
      if ( isErrorIgnored ) {
        for ( FileObject fileObject : nonExistantFiles ) {
          errorHandler.handleNonExistantFile( fileObject );
        }
      } else {
        throw new KettleException( "Following required files are missing: " + message );
      }
    }

    List<FileObject> nonAccessibleFiles = files.getNonAccessibleFiles();
    if ( !nonAccessibleFiles.isEmpty() ) {
      String message = FileInputList.getRequiredFilesDescription( nonAccessibleFiles );
      if ( log.isBasic() ) {
        log.logBasic( "Required files", "WARNING: Not accessible " + message );
      }
      if ( isErrorIgnored ) {
        for ( FileObject fileObject : nonAccessibleFiles ) {
          errorHandler.handleNonAccessibleFile( fileObject );
        }
      } else {
        throw new KettleException( "Following required files are not accessible: " + message );
      }
    }
  }

View on GitHub (pinned to f3058517a1)