{"record":{"id":"2a5dcb8e513e7468","repo":"stanfordnlp/CoreNLP","slug":"error-no-dest-file-provided-in-properties-or-via","errorCode":null,"errorMessage":"Error: No dest file provided in properties or via command line --multiWordRulesFile","messagePattern":"Error: No dest file provided in properties or via command line --multiWordRulesFile","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/edu/stanford/nlp/process/stattok/BuildMultiWordRules.java","lineNumber":31,"sourceCode":"\npublic class BuildMultiWordRules {\n  private static final Redwood.RedwoodChannels logger = Redwood.channels(StatTokSentTrainer.class);\n\n  // disallow making this class\n  private BuildMultiWordRules() {}\n\n  public static void main(String[] args) throws IOException {\n    Properties properties \t= StringUtils.argsToProperties(args);\n    String trainFile \t\t= properties.getProperty(\"trainFile\", null);\n    String multiWordRulesFile \t= properties.getProperty(\"multiWordRulesFile\", null);\n\n    if (trainFile == null){\n      logger.err(\"Error: No training file provided in properties or via command line --trainFile\");\n      return;\n    }\n\n    if (multiWordRulesFile == null){\n      logger.err(\"Error: No dest file provided in properties or via command line --multiWordRulesFile\");\n      return;\n    }\n\n    Map<String, String[]> rules = StatTokSentTrainer.inferMultiWordRules(trainFile);\n    StatTokSentTrainer.writeMultiWordRules(multiWordRulesFile, rules);\n  }\n}","sourceCodeStart":13,"sourceCodeEnd":38,"githubUrl":"https://github.com/stanfordnlp/CoreNLP/blob/1b7edd19c4d0d7b1f13a2591425b9b60a0b1af7a/src/edu/stanford/nlp/process/stattok/BuildMultiWordRules.java#L13-L38","documentation":"BuildMultiWordRules.main requires an output destination for the inferred multi-word rules, taken from the 'multiWordRulesFile' property. If it is null after parsing args, the tool logs this error and exits without computing anything. It guards against inferring rules that could never be persisted.","triggerScenarios":"Running BuildMultiWordRules with -trainFile supplied but no -multiWordRulesFile <path>, so properties.getProperty(\"multiWordRulesFile\") returns null.","commonSituations":"Assuming rules print to stdout by default; misspelling the flag (e.g. -multiwordRulesFile); copying only the trainFile flag from an example command.","solutions":["Add -multiWordRulesFile path/to/output.txt to the command line.","Ensure exact spelling/casing of the multiWordRulesFile flag.","Verify the destination directory exists and is writable to avoid a later write failure.","If a properties file is used instead, add multiWordRulesFile=<path> to it."],"exampleFix":"// before\njava -cp ... BuildMultiWordRules -trainFile train.conllu\n// after\njava -cp ... BuildMultiWordRules -trainFile train.conllu -multiWordRulesFile mw-rules.txt","handlingStrategy":"validation","validationCode":"Properties p = StringUtils.argsToProperties(args);\nif (p.getProperty(\"multiWordRulesFile\") == null) {\n    throw new IllegalArgumentException(\"-multiWordRulesFile <output> is required\");\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Use a canonical script with all required flags in one place.","Copy example commands verbatim rather than trimming flags.","Pre-create the output directory before invoking."],"tags":["java","cli","missing-argument","output-file"],"backgroundTag":"missing-required-argument","analyzedSha":"1b7edd19c4d0d7b1f13a2591425b9b60a0b1af7a","analyzedAt":"2026-09-10T02:24:07.274Z","contentChangedAt":"2026-09-10T02:24:07.274Z","schemaVersion":2},"datasetVersion":"2026-09-17T15:17:12.973Z"}