pentaho/pentaho-kettle · error · KettleException

TransExecutorDialog.Exception.UnableToFindRepositoryDirector…

Error message

TransExecutorDialog.Exception.UnableToFindRepositoryDirectory

What it means

Thrown by TransExecutorDialog.loadTransformation after parsing the repository path: repository.findDirectory(realDirectory) returned null, meaning the directory portion of the configured transformation path does not exist in the connected repository.

Solutions

  1. Connect to the correct repository and verify the directory exists via the repository browser.
  2. Re-select the transformation in the TransExecutor dialog so the path is refreshed.
  3. Recreate or rename the target directory to match the configured path, or update the step to the new path.
  4. Check repository connection settings (user permissions can hide directories).

Example fix

// before
realDirectory = "/jobs/old-name"
// after (renamed dir)
realDirectory = "/jobs/new-name"
Defensive patterns

Strategy: validation

Validate before calling

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

Type guard

boolean directoryExists(Repository repo, String path) { return path != null && repo.findDirectory(path) != null; }

Try / catch

try { loadTransformation(...); } catch (KettleException e) { showErrorDialog("Repository directory missing — reconnect to the correct repository and reselect the transformation.", e); }

Prevention

When it happens

Trigger: TransExecutor is configured with a repository transformation path whose directory (e.g. '/public/jobs') no longer exists in the repository the user is connected to.

Common situations: Connecting to a different repository or environment (dev vs prod) where the directory tree differs; the directory was renamed or deleted; case-sensitivity or leading-slash mistakes in the path.

Understand the failure class

Background: 'Could not be found', 'does not exist', 'not found in database': the resource-not-found family when an ID, slug, key, or URI lookup comes back empty — this error's family across 20 libraries.

Related errors


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

Appendix: source

Thrown at ui/src/main/java/org/pentaho/di/ui/trans/steps/transexecutor/TransExecutorDialog.java:393

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

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

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

View on GitHub (pinned to f3058517a1)