{"record":{"id":"acdbda01516afaed","repo":"oraios/serena","slug":"java-bsl-ls-min-java-version-is-required-for-bs-acdbda","errorCode":null,"errorMessage":"Java {BSL_LS_MIN_JAVA_VERSION}+ is required for BSL Language Server, but '{java_exe}' is Java {major}. Install a newer JDK (e.g. Temurin {BSL_LS_MIN_JAVA_VERSION}) and ensure it appears first on PATH or point JAVA_HOME to it.","messagePattern":"Java (.+?)\\+ is required for BSL Language Server, but '(.+?)' is Java (.+?)\\. Install a newer JDK \\(e\\.g\\. Temurin (.+?)\\) and ensure it appears first on PATH or point JAVA_HOME to it\\.","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/solidlsp/language_servers/bsl_language_server.py","lineNumber":95,"sourceCode":"\n\ndef _verify_java_available() -> None:\n    \"\"\"Ensures a suitable ``java`` (>= :data:`BSL_LS_MIN_JAVA_VERSION`) is on ``PATH``.\n\n    :raises RuntimeError: if ``java`` is missing or its major version is too low.\n    \"\"\"\n    java_exe = shutil.which(\"java\")\n    if java_exe is None:\n        raise RuntimeError(f\"Java {BSL_LS_MIN_JAVA_VERSION}+ is required for BSL Language Server but 'java' was not found on PATH.\")\n\n    major = _get_java_major_version(java_exe)\n    if major is None:\n        # detection failed; log a warning but let the LSP attempt to start\n        log.warning(\"Could not determine Java version for '%s'; BSL LSP requires Java %d+.\", java_exe, BSL_LS_MIN_JAVA_VERSION)\n        return\n\n    if major < BSL_LS_MIN_JAVA_VERSION:\n        raise RuntimeError(\n            f\"Java {BSL_LS_MIN_JAVA_VERSION}+ is required for BSL Language Server, but '{java_exe}' is Java {major}. \"\n            f\"Install a newer JDK (e.g. Temurin {BSL_LS_MIN_JAVA_VERSION}) and ensure it appears first on PATH \"\n            f\"or point JAVA_HOME to it.\"\n        )\n\n\nclass BSLLanguageServer(SolidLanguageServer):\n    \"\"\"\n    BSL (1C:Enterprise / OneScript) language server integration for Serena.\n    \"\"\"\n\n    def __init__(\n        self,\n        config: LanguageServerConfig,\n        repository_root_path: str,\n        solidlsp_settings: SolidLSPSettings,\n    ):\n        super().__init__(","sourceCodeStart":77,"sourceCodeEnd":113,"githubUrl":"https://github.com/oraios/serena/blob/7fcbca7e62555ec2287ddb2f083caee805848ea6/src/solidlsp/language_servers/bsl_language_server.py#L77-L113","documentation":"_verify_java_available raises RuntimeError when java is found on PATH but its detected major version is below BSLS_MIN_JAVA_VERSION. BSL Language Server requires a modern JDK; an old Java cannot run it.","triggerScenarios":"Calling _create_launch_command when _get_java_major_version(java_exe) returns a major < BSLS_MIN_JAVA_VERSION — e.g. PATH resolves to Java 8 or 11.","commonSituations":"System default Java is an old LTS (8/11) used by other tools; multiple JDKs installed with the old one first on PATH; JAVA_HOME pointing to an old JDK; macOS defaulting to legacy Apple Java.","solutions":["Install a JDK >= the minimum (e.g. Temurin BSLS_MIN_JAVA_VERSION)","Reorder PATH so the newer JDK's bin directory comes first (check `java -version`)","Point JAVA_HOME at the newer JDK and ensure $JAVA_HOME/bin is on PATH","Use a JDK version manager (sdkman/jenv) to select the required version for this project"],"exampleFix":"// before\n$ java -version\nopenjdk version \"1.8.0_312\"  # too old\n// after\nexport JAVA_HOME=/usr/lib/jvm/temurin-17-jdk\nexport PATH=$JAVA_HOME/bin:$PATH","handlingStrategy":"validation","validationCode":"import shutil, re, subprocess\njava = shutil.which(\"java\")\nif java:\n    out = subprocess.run([java, \"-version\"], capture_output=True, text=True).stderr\n    m = re.search(r'version \"(\\d+)', out)\n    if m and int(m.group(1)) < 17:\n        print(f\"Java {m.group(1)} is too old; install JDK 17+ and put it first on PATH\")","typeGuard":null,"tryCatchPattern":"try:\n    server = BSLLanguageServer(...)\nexcept RuntimeError as e:\n    if \"is Java\" in str(e) and \"BSL Language Server\" in str(e):\n        switch_to_newer_jdk(min_version=17)  # sdkman/jenv or JAVA_HOME update, then retry\n    else:\n        raise","preventionTips":["Keep a modern JDK (17+) as the default `java` on PATH for this project","Use sdkman/jenv to pin the JDK per project so old system Java never shadows it","Check `java -version` before starting Java-based language servers"],"tags":["java","version","jdk","bsl","incompatible-version"],"backgroundTag":"runtime-version-too-old","analyzedSha":"7fcbca7e62555ec2287ddb2f083caee805848ea6","analyzedAt":"2026-08-29T00:04:09.619Z","schemaVersion":2},"datasetVersion":"2026-08-29T02:17:18.158Z"}