{"record":{"id":"0c289818aa4738d2","repo":"oraios/serena","slug":"provided-lombok-path-lombok-path-does-not-exis","errorCode":null,"errorMessage":"Provided lombok_path '{lombok_path}' does not exist or is not a file.\nFix: download lombok jar from https://projectlombok.org/downloads/ or use the one from your local Maven cache (~/.m2/repository/org/projectlombok/lombok/<version>/lombok-<version>.jar).","messagePattern":"Provided lombok_path '(.+?)' does not exist or is not a file\\.\nFix: download lombok jar from https://projectlombok\\.org/downloads/ or use the one from your local Maven cache \\(~/\\.m2/repository/org/projectlombok/lombok/<version>/lombok-<version>\\.jar\\)\\.","errorType":"exception","errorClass":"SolidLSPException","httpStatus":null,"severity":"error","filePath":"src/solidlsp/language_servers/eclipse_jdtls.py","lineNumber":497,"sourceCode":"                    f\"then set ls_specific_settings.java.jdtls_path to the extracted directory.\"\n                )\n            plugins_dir = jdtls_root / \"plugins\"\n            if not plugins_dir.is_dir():\n                raise SolidLSPException(\n                    f\"Invalid jdtls_path '{jdtls_path}': 'plugins/' directory not found.\\n\"\n                    f\"Expected upstream JDTLS layout (plugins/, config_<platform>/, features/) at the root. \"\n                    f\"If you pointed at a vscode-java extension, use '<extension>/server' instead.\"\n                )\n\n            # resolve the main equinox launcher jar (excluding platform-specific native fragments)\n            launcher_jar = EclipseJDTLS.DependencyProvider._resolve_launcher_jar(plugins_dir)\n\n            # resolve the platform-specific config directory under jdtls_root\n            config_dir = EclipseJDTLS.DependencyProvider._resolve_config_dir(jdtls_root)\n\n            # validate lombok jar exists\n            if not Path(lombok_path).is_file():\n                raise SolidLSPException(\n                    f\"Provided lombok_path '{lombok_path}' does not exist or is not a file.\\n\"\n                    f\"Fix: download lombok jar from https://projectlombok.org/downloads/ or use the one \"\n                    f\"from your local Maven cache (~/.m2/repository/org/projectlombok/lombok/<version>/lombok-<version>.jar).\"\n                )\n\n            # resolve system JDK (priority: java_home setting -> JAVA_HOME env -> which java),\n            # interrogate the JVM for its real java.home and validate version >= 21\n            jre_home_path, jre_path = EclipseJDTLS.DependencyProvider._resolve_system_jdk(custom_settings)\n\n            log.info(\n                f\"Using upstream JDTLS at '{jdtls_path}' with system JDK '{jre_home_path}'. \"\n                f\"Launcher: {launcher_jar.name}; config: {config_dir.name}; lombok: {lombok_path}\"\n            )\n\n            return RuntimeDependencyPaths(\n                jre_path=jre_path,\n                jre_home_path=jre_home_path,\n                jdtls_launcher_jar_path=str(launcher_jar),","sourceCodeStart":479,"sourceCodeEnd":515,"githubUrl":"https://github.com/oraios/serena/blob/7fcbca7e62555ec2287ddb2f083caee805848ea6/src/solidlsp/language_servers/eclipse_jdtls.py#L479-L515","documentation":"This SolidLSPException is raised in upstream JDTLS mode when the configured lombok_path does not point to an existing file. JDTLS is launched with lombok as a javaagent, so a valid lombok jar path is mandatory; the error suggests downloading it or reusing the local Maven cache.","triggerScenarios":"During _setup_from_existing_install, Path(lombok_path).is_file() is False — file absent, path is a directory, symlink broken, or '~' left unexpanded.","commonSituations":"User wrote lombok_path without expanding '~'; jar deleted by a Maven cache cleanup; versioned path (lombok-<version>.jar) points at a version no longer cached; typo in filename.","solutions":["Point lombok_path at an existing jar, e.g. find one via: ls ~/.m2/repository/org/projectlombok/lombok/*/lombok-*.jar.","Otherwise download from https://projectlombok.org/downloads/ and set lombok_path to the downloaded file.","Replace '~' with an absolute path (or expand it) so the process can resolve it.","Verify with 'ls -l <lombok_path>' that it is a regular file readable by the user running Serena."],"exampleFix":"// before\n\"lombok_path\": \"~/.m2/repository/org/projectlombok/lombok/1.18.34/lombok-1.18.34.jar\"  (file deleted)\n// after\n\"lombok_path\": \"/home/me/.m2/repository/org/projectlombok/lombok/1.18.36/lombok-1.18.36.jar\"","handlingStrategy":"validation","validationCode":"import os\nlp = os.path.expanduser(settings['ls_specific_settings']['java']['lombok_path'])\nassert os.path.isfile(lp), f\"lombok jar missing at {lp}\"\nimport glob\ncandidates = glob.glob(os.path.expanduser('~/.m2/repository/org/projectlombok/lombok/*/lombok-*.jar'))","typeGuard":"def is_existing_file(path: str) -> bool:\n    from pathlib import Path\n    return Path(path).expanduser().is_file()","tryCatchPattern":"try:\n    ls = SolidLSP(java_config)\nexcept SolidLSPException as e:\n    if 'does not exist or is not a file' in str(e):\n        raise SystemExit(f\"Fix lombok_path: {e}\")\n    raise","preventionTips":["Use absolute (expanded) paths for lombok_path; never '~' unexpanded.","Verify the jar exists after Maven cache cleanups.","Keep a stable copy of the lombok jar in a project/tool directory if the Maven cache is pruned regularly.","Pin the lombok version used for the javaagent to one present on disk."],"tags":["java","jdtls","lombok","configuration"],"backgroundTag":"file-not-found","analyzedSha":"7fcbca7e62555ec2287ddb2f083caee805848ea6","analyzedAt":"2026-08-29T00:04:09.619Z","schemaVersion":2},"datasetVersion":"2026-08-29T02:17:18.158Z"}