{"record":{"id":"d36a23f4a95f0a6e","repo":"languagetool-org/languagetool","slug":"beolingusfile-not-found","errorCode":null,"errorMessage":"beolingusFile not found: ","messagePattern":"beolingusFile not found: ","errorType":"console","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"languagetool-server/src/main/java/org/languagetool/server/HTTPServerConfig.java","lineNumber":489,"sourceCode":"        }\n        dictLimitUser = Integer.valueOf(getOptionalProperty(props, \"dictLimitUser\", \"0\"));\n        dictLimitTeam = Integer.valueOf(getOptionalProperty(props, \"dictLimitTeam\", \"0\"));\n        styleGuideLimitUser = Integer.valueOf(getOptionalProperty(props, \"styleGuideLimitUser\", \"0\"));\n        styleGuideLimitTeam = Integer.valueOf(getOptionalProperty(props, \"styleGuideLimitTeam\", \"0\"));\n        requestLimitAccessToken = getOptionalProperty(props, \"requestLimitAccessToken\", null);\n        jwtSecret = getOptionalProperty(props, \"jwtSecret\", null);\n        externalRolloutServiceUrl = getOptionalProperty(props, \"externalRolloutServiceUrl\", null);\n        externalRolloutServiceApiKey = getOptionalProperty(props, \"externalRolloutServiceApiKey\", null);\n\n        globalConfig.setGrammalecteServer(getOptionalProperty(props, \"grammalecteServer\", null));\n        globalConfig.setGrammalecteUser(getOptionalProperty(props, \"grammalecteUser\", null));\n        globalConfig.setGrammalectePassword(getOptionalProperty(props, \"grammalectePassword\", null));\n        String beolingusFile = getOptionalProperty(props, \"beolingusFile\", null);\n        if (beolingusFile != null) {\n          if (new File(beolingusFile).exists()) {\n            globalConfig.setBeolingusFile(new File(beolingusFile));\n          } else {\n            throw new IllegalArgumentException(\"beolingusFile not found: \" + beolingusFile);\n          }\n        }\n        String nerUrl = getOptionalProperty(props, \"nerUrl\", null);\n        if (nerUrl != null) {\n          globalConfig.setNERUrl(nerUrl);\n          logger.info(\"Using NER service: \" + globalConfig.getNerUrl());\n        }\n        for (Object o : props.keySet()) {\n          String key = (String)o;\n          if (!KNOWN_OPTION_KEYS.contains(key) && !key.matches(\"lang-[a-z]+-dictPath\") && !key.matches(\"lang-[a-z]+\")) {\n            System.err.println(\"***** WARNING: ****\");\n            System.err.println(\"Key '\" + key + \"' from configuration file '\" + file + \"' is unknown. Please check the key's spelling (case is significant).\");\n            System.err.println(\"Known keys: \" + KNOWN_OPTION_KEYS);\n          }\n        }\n\n        addDynamicLanguages(props);\n        setAbTest(getOptionalProperty(props, \"abTest\", null));","sourceCodeStart":471,"sourceCodeEnd":507,"githubUrl":"https://github.com/languagetool-org/languagetool/blob/2e990059ce67d5e2a0f7f7ca5d31160c6709df4b/languagetool-server/src/main/java/org/languagetool/server/HTTPServerConfig.java#L471-L507","documentation":"The 'beolingusFile' property points to a local file of Beolingus translations used to improve multilingual lookup. If the path does not exist on disk, HTTPServerConfig throws this IllegalArgumentException instead of silently starting without the data.","triggerScenarios":"Server properties contains 'beolingusFile=/path' where the file does not exist (typo, missing download, wrong mount path).","commonSituations":"Beolingus data file never downloaded onto the server; Docker image built without copying the file; relative path resolved against an unexpected working directory.","solutions":["Download/obtain the Beolingus file and point 'beolingusFile' at an absolute, existing path","Verify existence with 'ls -l <path>' before starting the server","Remove the 'beolingusFile' property if the file is not required"],"exampleFix":"// before (server.properties)\nbeolingusFile=./data/de-en.txt\n\n// after (server.properties)\nbeolingusFile=/opt/languagetool/data/de-en.txt","handlingStrategy":"validation","validationCode":"String p = props.getProperty(\"beolingusFile\");\nif (p != null && !new File(p).exists()) {\n    throw new IllegalStateException(\"beolingusFile does not exist: \" + p);\n}","typeGuard":null,"tryCatchPattern":"try {\n    serverConfig = new HTTPServerConfig(props);\n} catch (IllegalArgumentException e) {\n    if (e.getMessage().startsWith(\"beolingusFile not found\")) {\n        log.error(\"Beolingus data file missing: {}\", e.getMessage());\n    }\n    throw e;\n}","preventionTips":["Download the Beolingus data as a provisioning step before server start","Use absolute paths and verify existence in the container entrypoint","Remove the property when the file is not needed"],"tags":["java","languagetool","file-not-found","server-config"],"backgroundTag":"file-not-found","analyzedSha":"2e990059ce67d5e2a0f7f7ca5d31160c6709df4b","analyzedAt":"2026-09-06T09:20:17.015Z","contentChangedAt":"2026-09-06T09:20:17.015Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}