pentaho/pentaho-kettle · error · KettleException

JobExecutorDialog.Exception.UnableToFindRepositoryDirectory

JobExecutorDialog.Exception.UnableToFindRepositoryDirectory

Error message

JobExecutorDialog.Exception.UnableToFindRepositoryDirectory

What it means

Thrown by JobExecutorDialog.loadJob after the job path was successfully split into directory and name, but repository.findDirectory(realDirectory) returned null. The dialog cannot resolve the referenced directory inside the connected repository, so it refuses to load the job.

Solutions

  1. Connect to the repository that actually contains the referenced directory
  2. Browse the repository in the dialog and re-select the job so the path is regenerated
  3. Verify the directory path exists (e.g. in Spoon's repository tree)
  4. Update the JobExecutor step configuration to the new path if the job was moved

Example fix

// before
String path = "/oldFolder/MyJob";
// after
String path = "/newFolder/MyJob"; // after verifying folder exists in connected repo
Defensive patterns

Strategy: validation

Validate before calling

RepositoryDirectoryInterface dir = repository.findDirectory(realDirectory);
if (dir == null) throw new IllegalStateException("Directory not found in repository: " + realDirectory);

Try / catch

try { loadJob(); } catch (KettleException e) { // prompt user to re-browse repository for the job }

Prevention

When it happens

Trigger: Calling loadJob (via getData, getParametersFromJob, or ok) when the directory portion of the configured job path does not exist in the currently connected repository.

Common situations: The job was moved or renamed in the repository, the dialog is connected to a different repository/environment than the one where the job lives, or the path uses wrong casing on a case-sensitive repository.

Related errors


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

Appendix: source

Thrown at ui/src/main/java/org/pentaho/di/ui/trans/steps/jobexecutor/JobExecutorDialog.java:393

        if ( Utils.isEmpty( filename ) ) {
          return;
        }
        String transPath = transMeta.environmentSubstitute( filename );
        String realJobname = transPath;
        String realDirectory = "";
        int index = transPath.lastIndexOf( "/" );
        if ( index != -1 ) {
          realJobname = transPath.substring( index + 1 );
          realDirectory = transPath.substring( 0, index );
        }

        if ( Utils.isEmpty( realDirectory ) || Utils.isEmpty( realJobname ) ) {
          throw new KettleException(
            BaseMessages.getString( PKG, "JobExecutorDialog.Exception.NoValidMappingDetailsFound" ) );
        }
        RepositoryDirectoryInterface repdir = repository.findDirectory( realDirectory );
        if ( repdir == null ) {
          throw new KettleException( BaseMessages.getString(
            PKG, "JobExecutorDialog.Exception.UnableToFindRepositoryDirectory" ) );
        }
        loadRepositoryJob( realJobname, repdir );
        break;
      default:
        break;
    }
  }


  /**
   * Copy information from the meta-data input to the dialog fields.
   */
  public void getData() {
    specificationMethod = jobExecutorMeta.getSpecificationMethod();
    switch ( specificationMethod ) {
      case FILENAME:
        wPath.setText( Const.NVL( jobExecutorMeta.getFileName(), "" ) );

View on GitHub (pinned to f3058517a1)