{"record":{"id":"88fe5284d46fb29b","repo":"stanfordnlp/CoreNLP","slug":"found-an-argument-basemodels-with-no-actual-model","errorCode":null,"errorMessage":"Found an argument -baseModels with no actual models named","messagePattern":"Found an argument -baseModels with no actual models named","errorType":"exception","errorClass":"java.lang.IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"src/edu/stanford/nlp/parser/dvparser/CombineDVModels.java","lineNumber":57,"sourceCode":"    List<String> unusedArgs = new ArrayList<>();\n\n    for (int argIndex = 0; argIndex < args.length; ) {\n      if (args[argIndex].equalsIgnoreCase(\"-model\")) {\n        modelPath = args[argIndex + 1];\n        argIndex += 2;\n      } else if (args[argIndex].equalsIgnoreCase(\"-testTreebank\")) {\n        Pair<String, FileFilter> treebankDescription = ArgUtils.getTreebankDescription(args, argIndex, \"-testTreebank\");\n        argIndex = argIndex + ArgUtils.numSubArgs(args, argIndex) + 1;\n        testTreebankPath = treebankDescription.first();\n        testTreebankFilter = treebankDescription.second();\n      } else if (args[argIndex].equalsIgnoreCase(\"-baseModels\")) {\n        argIndex++;\n        baseModelPaths = new ArrayList<>();\n        while (argIndex < args.length && args[argIndex].charAt(0) != '-') {\n          baseModelPaths.add(args[argIndex++]);\n        }\n        if (baseModelPaths.size() == 0) {\n          throw new IllegalArgumentException(\"Found an argument -baseModels with no actual models named\");\n        }\n      } else {\n        unusedArgs.add(args[argIndex++]);\n      }\n    }\n\n    String[] newArgs = unusedArgs.toArray(new String[unusedArgs.size()]);\n    LexicalizedParser underlyingParser = null;\n    Options options = null;\n    LexicalizedParser combinedParser = null;\n    if (baseModelPaths != null) {\n      List<DVModel> dvparsers = new ArrayList<>();\n      for (String baseModelPath : baseModelPaths) {\n        log.info(\"Loading serialized DVParser from \" + baseModelPath);\n        LexicalizedParser dvparser = LexicalizedParser.loadModel(baseModelPath);\n        Reranker reranker = dvparser.reranker;\n        if (!(reranker instanceof DVModelReranker)) {\n          throw new IllegalArgumentException(\"Expected parsers with DVModel embedded\");","sourceCodeStart":39,"sourceCodeEnd":75,"githubUrl":"https://github.com/stanfordnlp/CoreNLP/blob/1b7edd19c4d0d7b1f13a2591425b9b60a0b1af7a/src/edu/stanford/nlp/parser/dvparser/CombineDVModels.java#L39-L75","documentation":"CombineDVModels.main throws IllegalArgumentException when the -baseModels flag is present but is followed by zero model paths (the next argument starts with '-' or the argument list ends). At least one base serialized DVParser is required to combine DV models. The guard fires immediately after the flag-parsing while-loop.","triggerScenarios":"Passing '-baseModels' as the last argument, or as '-baseModels -model foo' where the next token starts with '-', terminating the path-collection loop with an empty list.","commonSituations":"Quoting mistakes in shell scripts that drop the arguments (e.g. unexpanded empty variable); putting another flag directly after -baseModels; forgetting that multiple model paths must follow as bare tokens until the next '-' argument.","solutions":["List one or more serialized parser paths after -baseModels, e.g. -baseModels parser1.ser.gz parser2.ser.gz","Ensure no other '-flag' token immediately follows -baseModels","Check shell variables for empty expansion before the tool runs"],"exampleFix":"// before\n... -baseModels -model combined.ser.gz\n// after\n... -baseModels parser1.ser.gz parser2.ser.gz -model combined.ser.gz","handlingStrategy":"validation","validationCode":"if (cmdArgs != null) {\n    for (int i = 0; i < cmdArgs.length; i++) {\n        if (cmdArgs[i].equals(\"-baseModels\") &&\n            (i + 1 >= cmdArgs.length || cmdArgs[i+1].startsWith(\"-\"))) {\n            throw new IllegalArgumentException(\"-baseModels needs at least one parser path\");\n        }\n    }\n}","typeGuard":null,"tryCatchPattern":"try {\n    CombineDVModels.main(args);\n} catch (IllegalArgumentException e) {\n    if (e.getMessage().contains(\"-baseModels\")) {\n        System.err.println(\"List one or more serialized DVParser paths after -baseModels\");\n    }\n}","preventionTips":["Never place another flag immediately after -baseModels","Check shell variables for empty expansion before running","Validate the argument array programmatically in scripts"],"tags":["cli","argument-validation","stanford-corenlp"],"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-15T23:17:13.987Z"}