{"record":{"id":"9e046c4c959f4f2e","repo":"pentaho/pentaho-kettle","slug":"xbaseinputmeta-exception-nofilesfoundtoprocess","errorCode":null,"errorMessage":"XBaseInputMeta.Exception.NoFilesFoundToProcess","messagePattern":"XBaseInputMeta\\.Exception\\.NoFilesFoundToProcess","errorType":"exception","errorClass":"KettleStepException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/trans/steps/xbaseinput/XBaseInputMeta.java","lineNumber":347,"sourceCode":"      rowMeta.addValueMeta( rnr );\n    }\n\n    if ( includeFilename ) {\n      ValueMetaInterface v = new ValueMetaString( filenameField );\n      v.setLength( 100, -1 );\n      v.setOrigin( name );\n      rowMeta.addValueMeta( v );\n    }\n    return rowMeta;\n  }\n\n  @Override\n  public void getFields( Bowl bowl, RowMetaInterface row, String name, RowMetaInterface[] info, StepMeta nextStep,\n    VariableSpace space, Repository repository, IMetaStore metaStore ) throws KettleStepException {\n\n    FileInputList fileList = getTextFileList( bowl, space );\n    if ( fileList.nrOfFiles() == 0 ) {\n      throw new KettleStepException( BaseMessages\n        .getString( PKG, \"XBaseInputMeta.Exception.NoFilesFoundToProcess\" ) );\n    }\n\n    row.addRowMeta( getOutputFields( fileList, name ) );\n  }\n\n  @Override\n  public String getXML() {\n    StringBuilder retval = new StringBuilder();\n\n    retval.append( \"    \" + XMLHandler.addTagValue( \"file_dbf\", dbfFileName ) );\n    retval.append( \"    \" + XMLHandler.addTagValue( \"limit\", rowLimit ) );\n    retval.append( \"    \" + XMLHandler.addTagValue( \"add_rownr\", rowNrAdded ) );\n    retval.append( \"    \" + XMLHandler.addTagValue( \"field_rownr\", rowNrField ) );\n\n    retval.append( \"    \" + XMLHandler.addTagValue( \"include\", includeFilename ) );\n    retval.append( \"    \" + XMLHandler.addTagValue( \"include_field\", filenameField ) );\n    retval.append( \"    \" + XMLHandler.addTagValue( \"charset_name\", charactersetName ) );","sourceCodeStart":329,"sourceCodeEnd":365,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/trans/steps/xbaseinput/XBaseInputMeta.java#L329-L365","documentation":"Thrown by XBaseInputMeta.getFields() when the resolved file list (getTextFileList, honoring filename wildcards and 'accepting files from a previous step') contains zero files. The step cannot build any output fields without at least one DBF file, so it fails fast with this localized KettleStepException.","triggerScenarios":"getFields() computes FileInputList via getTextFileList(); if fileList.nrOfFiles() == 0 — no file configured, wildcard matched nothing, or accepted filenames field is empty — the exception is thrown immediately.","commonSituations":"Wildcard pattern (e.g. *.dbf) that matches no files in the directory, wrong directory path, using 'accept filenames from previous step' where the upstream step produced no rows or the accept field/step was not configured, environment differences between dev and prod paths.","solutions":["Check the File/dirname and wildcard settings in the XBase Input dialog point to a directory containing .dbf files.","If 'Accept filenames from previous step' is enabled, verify the previous step name and accept field are correctly set and the upstream step emits rows.","Test the wildcard on the runtime environment (case sensitivity, path separators) — Linux is case-sensitive.","Use variables/parameters correctly resolved in the execution environment (check parameter values in the execution log).","Preview the step in Spoon; it will show the same 'no files found' condition at design time."],"exampleFix":"// before: wildcard that matches nothing on a case-sensitive FS\nwildcard = \"*.DBF\"; directory = \"/data/incoming\"\n\n// after: lowercase wildcard or normalize\nwildcard = \"*.dbf\"; // or list files case-insensitively before the step","handlingStrategy":"validation","validationCode":"FileInputList fileList = meta.getTextFileList( bowl, space );\nif ( fileList.nrOfFiles() == 0 ) {\n  throw new KettleStepException( \"No XBase files match the configured directory/wildcard: \"\n    + space.environmentSubstitute( directory ) + \"/\" + wildcard );\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Test wildcard patterns (including case sensitivity) on the actual runtime OS.","Use environment-substituted variables and log the resolved paths at run start.","When accepting filenames from a previous step, verify the upstream step name and field are set and produce rows.","Add a 'Check if file exists' or validation step upstream to fail early with a clear message."],"tags":["pdi","xbase","file-list","configuration","empty-input"],"backgroundTag":"empty-result-set","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"}