{"record":{"id":"bff3ec8b93768269","repo":"oraios/serena","slug":"nextflow-language-server-jar-not-found-at-jar-pat","errorCode":null,"errorMessage":"Nextflow Language Server JAR not found at {jar_path}","messagePattern":"Nextflow Language Server JAR not found at (.+?)","errorType":"exception","errorClass":"FileNotFoundError","httpStatus":null,"severity":"error","filePath":"src/solidlsp/language_servers/nextflow_language_server.py","lineNumber":125,"sourceCode":"        @classmethod\n        def update_dep_hashes(cls) -> None:\n            deps = [cls._create_dep_language_server()]\n            with DownloadedDependencyHashDatabase.get_instance().update_context() as db:\n                for dep in deps:\n                    db.update(dep)\n\n        def _get_or_install_core_dependency(self) -> str:\n            version = self._custom_settings.get(\"nextflow_ls_version\", DEFAULT_NEXTFLOW_LS_VERSION)\n            install_dir = os.path.join(self._ls_resources_dir, f\"nextflow_language_server-{version}\")\n            jar_path = os.path.join(install_dir, NEXTFLOW_LS_JAR_NAME)\n\n            if not os.path.exists(jar_path):\n                os.makedirs(install_dir, exist_ok=True)\n                log.info(\"Downloading Nextflow Language Server %s ...\", version)\n                self._create_dep_language_server(version).download_to(jar_path)\n\n            if not os.path.exists(jar_path):\n                raise FileNotFoundError(f\"Nextflow Language Server JAR not found at {jar_path}\")\n            return jar_path\n\n        def _create_launch_command(self, core_path: str) -> list[str]:\n            java_exe = self._resolve_java()\n            jvm_options = self._custom_settings.get(\"jvm_options\", [])\n            if not isinstance(jvm_options, list):\n                log.warning(\"The 'jvm_options' setting should be a list of strings. Ignoring the provided value: %s\", jvm_options)\n                jvm_options = []\n            return [java_exe, *jvm_options, \"-jar\", core_path]\n\n        def _resolve_java(self) -> str:\n            \"\"\"\n            Locates a ``java`` executable (``java_home`` setting -> ``JAVA_HOME`` -> PATH) and verifies\n            that it is new enough to run the language server.\n\n            :return: the path to the java executable\n            \"\"\"\n            java_exe_name = \"java.exe\" if os.name == \"nt\" else \"java\"","sourceCodeStart":107,"sourceCodeEnd":143,"githubUrl":"https://github.com/oraios/serena/blob/7fcbca7e62555ec2287ddb2f083caee805848ea6/src/solidlsp/language_servers/nextflow_language_server.py#L107-L143","documentation":"The Nextflow language server runs from a downloaded JAR. _get_or_install_core_dependency downloads the JAR to jar_path if absent, then re-checks existence; FileNotFoundError means the download produced no file at the expected path, so the server cannot be launched.","triggerScenarios":"First-run install where _create_dep_language_server(version).download_to(jar_path) silently fails or writes elsewhere (network error swallowed, wrong version tag with no release asset, proxy interference) and the follow-up os.path.exists(jar_path) check fails.","commonSituations":"Pinned version has no matching GitHub release asset; network/proxy blocking the download host; read-only or full install_dir preventing the write; offline CI environments.","solutions":["Check the configured server version has a published release/JAR and network access to its download URL, then retry","Manually download the JAR into the install_dir at the exact expected jar_path filename","Inspect logs from download_to for the underlying HTTP error; fix proxy/credentials and clear any partial files"],"exampleFix":"# before\nls = SolidLSP(\"nextflow\")  # auto-download fails behind proxy\n# after\nexport HTTPS_PROXY=http://proxy.corp:8080\n# or pre-place the jar at the expected install_dir/<version>/*.jar path\nls = SolidLSP(\"nextflow\")","handlingStrategy":"retry","validationCode":"import os, glob\ninstall_dir = \"<install_dir>\"\njars = glob.glob(os.path.join(install_dir, \"**\", \"*.jar\"), recursive=True)\nassert jars, \"Nextflow LS JAR missing; pre-download or fix network access\"","typeGuard":"def jar_present(install_dir: str) -> bool:\n    return any(install_dir.rglob(\"*.jar\")) if hasattr(install_dir, 'rglob') else bool(glob.glob(os.path.join(install_dir, '**', '*.jar'), recursive=True))","tryCatchPattern":"try:\n    ls = SolidLSP(\"nextflow\")\nexcept FileNotFoundError as e:\n    if \"JAR not found\" in str(e):\n        manually_download_nextflow_jar(install_dir)\n        ls = SolidLSP(\"nextflow\")\n    else:\n        raise","preventionTips":["Verify the pinned server version has a published release asset","Allow egress to the JAR download host from CI/proxied networks","Pre-download the JAR into install_dir for offline/air-gapped setups"],"tags":["network","download","java","nextflow","installation"],"backgroundTag":"binary-download-failed","analyzedSha":"7fcbca7e62555ec2287ddb2f083caee805848ea6","analyzedAt":"2026-08-29T00:04:09.619Z","schemaVersion":2},"datasetVersion":"2026-08-29T02:17:18.158Z"}