stanfordnlp/CoreNLP · error · java.lang.IllegalArgumentException
Found an argument -baseModels with no actual models named
Error message
Found an argument -baseModels with no actual models named
What it means
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.
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
Example fix
// before ... -baseModels -model combined.ser.gz // after ... -baseModels parser1.ser.gz parser2.ser.gz -model combined.ser.gz
Defensive patterns
Strategy: validation
Validate before calling
if (cmdArgs != null) {
for (int i = 0; i < cmdArgs.length; i++) {
if (cmdArgs[i].equals("-baseModels") &&
(i + 1 >= cmdArgs.length || cmdArgs[i+1].startsWith("-"))) {
throw new IllegalArgumentException("-baseModels needs at least one parser path");
}
}
} Try / catch
try {
CombineDVModels.main(args);
} catch (IllegalArgumentException e) {
if (e.getMessage().contains("-baseModels")) {
System.err.println("List one or more serialized DVParser paths after -baseModels");
}
} Prevention
- Never place another flag immediately after -baseModels
- Check shell variables for empty expansion before running
- Validate the argument array programmatically in scripts
When it happens
Trigger: 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.
Common situations: 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.
Understand the failure class
Background: "missing required argument" and "the following required arguments were not provided": what required-argument errors mean and how to fix them — this error's family across 20 libraries.
Related errors
- Need to supply a parser model with -model
- Need to supply an output filename with -output
- Need to supply a treebank with -treebank
- Need to specify -model to load an already prepared…
- Please specify either -file, -fileList or -stdin
AI-assisted analysis of stanfordnlp/CoreNLP@1b7edd19c4 (2026-09-10).
Data as JSON: /api/errors/88fe5284d46fb29b.
Report an issue: GitHub.
Appendix: source
Thrown at src/edu/stanford/nlp/parser/dvparser/CombineDVModels.java:57
List<String> unusedArgs = new ArrayList<>();
for (int argIndex = 0; argIndex < args.length; ) {
if (args[argIndex].equalsIgnoreCase("-model")) {
modelPath = args[argIndex + 1];
argIndex += 2;
} else if (args[argIndex].equalsIgnoreCase("-testTreebank")) {
Pair<String, FileFilter> treebankDescription = ArgUtils.getTreebankDescription(args, argIndex, "-testTreebank");
argIndex = argIndex + ArgUtils.numSubArgs(args, argIndex) + 1;
testTreebankPath = treebankDescription.first();
testTreebankFilter = treebankDescription.second();
} else if (args[argIndex].equalsIgnoreCase("-baseModels")) {
argIndex++;
baseModelPaths = new ArrayList<>();
while (argIndex < args.length && args[argIndex].charAt(0) != '-') {
baseModelPaths.add(args[argIndex++]);
}
if (baseModelPaths.size() == 0) {
throw new IllegalArgumentException("Found an argument -baseModels with no actual models named");
}
} else {
unusedArgs.add(args[argIndex++]);
}
}
String[] newArgs = unusedArgs.toArray(new String[unusedArgs.size()]);
LexicalizedParser underlyingParser = null;
Options options = null;
LexicalizedParser combinedParser = null;
if (baseModelPaths != null) {
List<DVModel> dvparsers = new ArrayList<>();
for (String baseModelPath : baseModelPaths) {
log.info("Loading serialized DVParser from " + baseModelPath);
LexicalizedParser dvparser = LexicalizedParser.loadModel(baseModelPath);
Reranker reranker = dvparser.reranker;
if (!(reranker instanceof DVModelReranker)) {
throw new IllegalArgumentException("Expected parsers with DVModel embedded");View on GitHub (pinned to 1b7edd19c4)