{"record":{"id":"ea0ac696d0823a85","repo":"oraios/serena","slug":"groovy-language-server-jar-not-found-to-use-groov","errorCode":null,"errorMessage":"Groovy Language Server JAR not found. To use Groovy language support:\nSet 'ls_jar_path' in groovy settings in serena_config.yml:\n   ls_specific_settings:\n     groovy:\n       ls_jar_path: '/path/to/groovy-language-server.jar'\n   Ensure the JAR file is available at the configured path\n","messagePattern":"Groovy Language Server JAR not found\\. To use Groovy language support:\nSet 'ls_jar_path' in groovy settings in serena_config\\.yml:\n   ls_specific_settings:\n     groovy:\n       ls_jar_path: '/path/to/groovy-language-server\\.jar'\n   Ensure the JAR file is available at the configured path\n","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"src/solidlsp/language_servers/groovy_language_server.py","lineNumber":236,"sourceCode":"        assert java_path and os.path.exists(java_path), f\"Java executable not found at {java_path}\"\n\n        ls_jar_path = cls._find_groovy_ls_jar(solidlsp_settings)\n\n        return GroovyRuntimeDependencyPaths(java_path=java_path, java_home_path=java_home_path, ls_jar_path=ls_jar_path)\n\n    @classmethod\n    def _find_groovy_ls_jar(cls, solidlsp_settings: SolidLSPSettings) -> str:\n        \"\"\"\n        Find Groovy Language Server JAR file\n        \"\"\"\n        if solidlsp_settings and solidlsp_settings.ls_specific_settings:\n            groovy_settings = solidlsp_settings.get_ls_specific_settings(LanguageServerId.GROOVY)\n            config_jar_path = groovy_settings.get(\"ls_jar_path\")\n            if config_jar_path and os.path.exists(config_jar_path):\n                log.info(f\"Using Groovy LS JAR from configuration: {config_jar_path}\")\n                return config_jar_path\n\n        # if JAR not found\n        raise RuntimeError(\n            \"Groovy Language Server JAR not found. To use Groovy language support:\\n\"\n            \"Set 'ls_jar_path' in groovy settings in serena_config.yml:\\n\"\n            \"   ls_specific_settings:\\n\"\n            \"     groovy:\\n\"\n            \"       ls_jar_path: '/path/to/groovy-language-server.jar'\\n\"\n            \"   Ensure the JAR file is available at the configured path\\n\"\n        )\n\n    def _create_base_initialize_params(self) -> dict:\n        \"\"\"\n        Returns the initialize params for the Groovy Language Server.\n        \"\"\"\n        initialize_params = {\n            \"capabilities\": {\n                \"textDocument\": {\n                    \"synchronization\": {\"dynamicRegistration\": True, \"didSave\": True},\n                    \"completion\": {\"dynamicRegistration\": True},","sourceCodeStart":218,"sourceCodeEnd":254,"githubUrl":"https://github.com/oraios/serena/blob/7fcbca7e62555ec2287ddb2f083caee805848ea6/src/solidlsp/language_servers/groovy_language_server.py#L218-L254","documentation":"RuntimeError raised by GroovyLanguageServer._find_groovy_ls_jar (called from _setup_runtime_dependencies) when no Groovy Language Server JAR can be located. Unlike many servers, the Groovy LS is not auto-downloaded; it must be supplied via the ls_jar_path setting in serena_config.yml. This is a configuration-required error.","triggerScenarios":"Initializing Groovy language support when ls_specific_settings.groovy.ls_jar_path is unset, or set but the file does not exist at that path (os.path.exists fails).","commonSituations":"Never configured the jar path; typo in the path or the jar was moved/deleted; configured a relative path while the process runs from a different working directory; forgot the ls_specific_settings.groovy nesting in serena_config.yml.","solutions":["Download/build the Groovy Language Server JAR (groovy-language-server project) to a stable location","Set ls_specific_settings.groovy.ls_jar_path to the absolute path of the JAR in serena_config.yml","Verify the file exists: ls -l /path/to/groovy-language-server.jar","Use an absolute path, not relative, so it resolves regardless of working directory"],"exampleFix":"# before (serena_config.yml)\nls_specific_settings:\n  groovy:\n    ls_jar_path: 'groovy-language-server.jar'  # relative, not found\n// after\nls_specific_settings:\n  groovy:\n    ls_jar_path: '/opt/tools/groovy-language-server.jar'  # absolute, exists","handlingStrategy":"validation","validationCode":"import os, yaml\ndef ensure_groovy_jar_configured(config_path='serena_config.yml'):\n    cfg = yaml.safe_load(open(config_path))\n    jar = cfg.get('ls_specific_settings', {}).get('groovy', {}).get('ls_jar_path')\n    if not jar or not os.path.isfile(jar):\n        raise FileNotFoundError(f\"Groovy LS JAR not set or missing: {jar}\")","typeGuard":null,"tryCatchPattern":"try:\n    ls = GroovyLanguageServer(...)\nexcept RuntimeError as e:\n    if 'JAR not found' in str(e):\n        log.error('Set ls_specific_settings.groovy.ls_jar_path to an absolute existing jar path')\n        raise","preventionTips":["Configure ls_jar_path with an absolute path during environment setup","Verify the jar exists at boot with an os.path.isfile check","Keep the jar in a stable location outside tmp/build dirs","Nest the setting correctly under ls_specific_settings.groovy in serena_config.yml"],"tags":["groovy","configuration","missing-jar","language-server"],"backgroundTag":"language-server-jar-not-configured","analyzedSha":"7fcbca7e62555ec2287ddb2f083caee805848ea6","analyzedAt":"2026-08-29T00:04:09.619Z","schemaVersion":2},"datasetVersion":"2026-08-29T02:17:18.158Z"}