{"record":{"id":"1a224dd34cc7a8dd","repo":"pentaho/pentaho-kettle","slug":"propertyinputdialog-exception-filedoesnotexist","errorCode":"PropertyInputDialog.Exception.FileDoesNotExist","errorMessage":"PropertyInputDialog.Exception.FileDoesNotExist","messagePattern":"PropertyInputDialog\\.Exception\\.FileDoesNotExist","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"ui/src/main/java/org/pentaho/di/ui/trans/steps/propertyinput/PropertyInputDialog.java","lineNumber":1559,"sourceCode":"\n        // Check if it exists\n        if ( theFirstFile.exists() ) {\n          // Get all sections from the INI file\n          String[] sectionNames = loadSectionsFromIniFile( theFirstFile );\n\n          // Show the list for the user to select one section\n          EnterSelectionDialog dialog = new EnterSelectionDialog( shell, sectionNames,\n            BaseMessages.getString( PKG, \"PropertyInputDialog.Dialog.SelectASection.Title\" ),\n            BaseMessages.getString( PKG, \"PropertyInputDialog.Dialog.SelectASection.Message\" ) );\n          String sectionName = dialog.open();\n\n          // If the user selected a section, set it in the dialog\n          if ( sectionName != null ) {\n            wSection.setText( sectionName );\n          }\n        } else {\n          // The file not exists !\n          throw new KettleException( BaseMessages.getString(\n            PKG, \"PropertyInputDialog.Exception.FileDoesNotExist\", KettleVFS.getFilename( theFirstFile ) ) );\n        }\n      } else {\n        // No file specified\n        MessageBox mb = new MessageBox( shell, SWT.OK | SWT.ICON_ERROR );\n        mb.setMessage( BaseMessages.getString( PKG, \"PropertyInputDialog.FilesMissing.DialogMessage\" ) );\n        mb.setText( BaseMessages.getString( PKG, \"System.Dialog.Error.Title\" ) );\n        mb.open();\n      }\n    } catch ( Exception e ) {\n      new ErrorDialog(\n        shell, BaseMessages.getString( PKG, \"PropertyInputDialog.UnableToGetListOfSections.Title\" ),\n        BaseMessages.getString( PKG, \"PropertyInputDialog.UnableToGetListOfSections.Message\" ), e );\n    }\n  }\n\n  private String[] loadSectionsFromIniFile( FileObject theFirstFile ) throws IOException, ConfigurationException {\n    String[] sectionNames;","sourceCodeStart":1541,"sourceCodeEnd":1577,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/ui/src/main/java/org/pentaho/di/ui/trans/steps/propertyinput/PropertyInputDialog.java#L1541-L1577","documentation":"Thrown in PropertyInputDialog's constructor when loading field/section data: the first configured input file exists in the filename list but cannot be found on disk/VFS. The dialog needs the file to enumerate sections and fields and aborts when it is missing.","triggerScenarios":"Opening the Property Input dialog (getData path) where the first file after environment substitution does not exist in the filesystem, so the existence check fails before reading.","commonSituations":"Environment variable pointing to a wrong location, file deleted or moved after the step was configured, typo in the filename, or running the dialog on a machine where the file path is not mounted.","solutions":["Verify the file exists at the resolved path and fix the filename in the File tab","Check environment variable substitutions resolve to a valid path on this machine","Create/copy the properties file to the expected location","Use the Browse button to select the file so the path is definitely valid"],"exampleFix":"// before\nString file = \"${INPUT_DIR}/app.properties\"; // INPUT_DIR unset on this host\n// after\nString file = \"/data/config/app.properties\"; // or set INPUT_DIR correctly","handlingStrategy":"validation","validationCode":"String resolved = transMeta.environmentSubstitute(filename);\nFile f = new File(resolved);\nif (!f.exists() || !f.isFile()) throw new FileNotFoundException(\"Property input file missing: \" + resolved);","typeGuard":null,"tryCatchPattern":"try { openDialog(); } catch (KettleException e) { // show 'file does not exist' message with resolved path }","preventionTips":["Verify environment variables resolve on every target machine","Use the Browse button to pick files","Check file existence after any move/deploy"],"tags":["pentaho-kettle","swt-dialog","file-not-found","properties"],"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"}