{"record":{"id":"cf7150261518243a","repo":"pentaho/pentaho-kettle","slug":"e-no-own-message-error-resolving-resource-naming-for-input","errorCode":null,"errorMessage":"e (no own message; error resolving resource/naming for input files)","messagePattern":"e \\(no own message; error resolving resource/naming for input files\\)","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/trans/steps/csvinput/CsvInputMeta.java","lineNumber":807,"sourceCode":"        // From : ${Internal.Transformation.Filename.Directory}/../foo/bar.csv\n        // To : /home/matt/test/files/foo/bar.csv\n        //\n        FileObject fileObject = KettleVFS.getInstance( executionBowl )\n          .getFileObject( space.environmentSubstitute( filename ), space );\n\n        // If the file doesn't exist, forget about this effort too!\n        //\n        if ( fileObject.exists() ) {\n          // Convert to an absolute path...\n          //\n          filename = namingInterface.nameResource( fileObject, space, true );\n\n          return filename;\n        }\n      }\n      return null;\n    } catch ( Exception e ) {\n      throw new KettleException( e );\n    }\n  }\n\n  @Override\n  public boolean supportsErrorHandling() {\n    return true;\n  }\n\n  @Override\n  public StepMetaInjectionInterface getStepMetaInjectionInterface() {\n\n    return this;\n  }\n\n  @Override\n  public void injectStepMetadataEntries( List<StepInjectionMetaEntry> metadata ) {\n    for ( StepInjectionMetaEntry entry : metadata ) {\n      KettleAttributeInterface attr = findAttribute( entry.getKey() );","sourceCodeStart":789,"sourceCodeEnd":825,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/trans/steps/csvinput/CsvInputMeta.java#L789-L825","documentation":"CsvInputMeta.exportResources() resolves filenames and naming conflicts when exporting a transformation, and rethrows any unexpected exception as a message-less KettleException. It means resource substitution (turning absolute file paths into relative/exported references) for one of the input files failed, aborting the export.","triggerScenarios":"TransMeta.exportResources or 'Export transformation' when computing the resource path for a CSV filename throws — e.g. a null/empty filename, an invalid URL, or an exception from the underlying resource referencing logic.","commonSituations":"CSV Input step with a variable-based filename that cannot be substituted at export time; step configured with no filename at all; exporting on a different OS where the absolute path doesn't parse.","solutions":["Check the chained cause e to identify which filename/operation failed.","Ensure every CSV Input step has a resolvable filename (replace unresolvable variables with real paths or environment-substitutable values).","Fix malformed paths (mixed separators, invalid characters, URLs) in the step's file tab.","Export with the environment/variables defined so filenames can be substituted."],"exampleFix":"// before\nfilenameField = \"${MY_VAR}/data.csv\"; // MY_VAR undefined at export\n// after: set the variable before exporting\ntransMeta.setVariable(\"MY_VAR\", \"/opt/data\");","handlingStrategy":"validation","validationCode":"String fn = meta.getFilename() == null ? null : transMeta.environmentSubstitute(meta.getFilename());\nif (fn == null || fn.isEmpty()) throw new IllegalArgumentException(\"CSV Input filename must be set before export\");\nif (!new File(fn).exists()) throw new IllegalArgumentException(\"File does not exist: \" + fn);","typeGuard":null,"tryCatchPattern":"try { exported = transMeta.exportResources(...); }\ncatch (KettleException e) {\n  if (e.getCause() != null && e.getMessage() == null) {\n    log.error(\"Resource export failed\", e.getCause());\n  }\n}","preventionTips":["Define all filename variables before exporting","Use portable paths (forward slashes, no drive letters) for cross-OS exports","Preview the step to confirm the filename resolves"],"tags":["kettle","export","resource-resolution"],"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"}