oraios/serena · error · RuntimeError
Julia is not installed or not in your PATH. Please install J
Error message
Julia is not installed or not in your PATH. Please install Julia from https://julialang.org/downloads/ and ensure it is accessible. Checked locations: {common_locations} What it means
Serena's Julia language server requires a Julia runtime to launch. _setup_runtime_dependency probes a list of common install locations (and PATH) for a julia executable that is readable and executable; if none qualifies, it raises RuntimeError with the checked locations.
Source
Thrown at src/solidlsp/language_servers/julia_server.py:74
"""
# First check if julia is in PATH
julia_path = shutil.which("julia")
# If not found in PATH, check common installation locations
if julia_path is None:
common_locations = [
os.path.expanduser("~/.juliaup/bin/julia"),
os.path.expanduser("~/.julia/bin/julia"),
"/usr/local/bin/julia",
"/usr/bin/julia",
]
for location in common_locations:
if os.path.isfile(location) and os.access(location, os.X_OK):
julia_path = location
break
if julia_path is None:
raise RuntimeError(
"Julia is not installed or not in your PATH. "
"Please install Julia from https://julialang.org/downloads/ and ensure it is accessible. "
f"Checked locations: {common_locations}"
)
# Check if LanguageServer.jl is installed.
# stdin=DEVNULL: when Serena runs over the stdio MCP transport, the JSON-RPC
# channel *is* the process stdin/stdout. Without this, the Julia child inherits
# Serena's stdin (the MCP pipe) and clobbers it, killing the server right after
# initialize ("tools fetch failed"). See https://github.com/oraios/serena/issues/1577
check_cmd = [julia_path, "-e", "using LanguageServer"]
try:
result = subprocess_run(check_cmd, check=False, capture_output=True, text=True, timeout=10)
if result.returncode != 0:
# LanguageServer.jl not found, install it
JuliaLanguageServer._install_language_server(julia_path)
except subprocess.TimeoutExpired:View on GitHub (pinned to 7fcbca7e62)
Solutions
- Install Julia from https://julialang.org/downloads/ and ensure the `julia` binary is on PATH.
- Symlink or copy your existing julia binary into one of the checked common_locations (e.g. /usr/local/bin/julia).
- If julia exists at a custom path, chmod +x it and export PATH so the probe (`which julia`) succeeds.
- Verify with `julia --version` that the runtime is reachable before restarting Serena.
Example fix
// before $ serena start --language julia // RuntimeError: Julia is not installed or not in your PATH... // after $ ln -s ~/julia-1.10.4/bin/julia /usr/local/bin/julia $ julia --version $ serena start --language julia
Defensive patterns
Strategy: validation
Validate before calling
import os, shutil
def validate_julia_runtime(common_locations=None) -> bool:
if shutil.which("julia"):
return True
for loc in common_locations or ["/usr/local/bin/julia", "/usr/bin/julia", os.path.expanduser("~/julia/bin/julia")]:
if os.path.isfile(loc) and os.access(loc, os.X_OK):
return True
return False
# call before constructing the Julia language server; if False, install Julia or symlink into a checked location Try / catch
try:
server = JuliaLanguageServer(**kwargs)
except RuntimeError as e:
if "Julia is not installed" in str(e):
raise EnvironmentError(
"Install Julia (https://julialang.org/downloads/) and ensure `julia` is on PATH, "
"then retry. Locations checked: " + str(e)
) from e
raise Prevention
- Pre-install Julia in CI images/containers and verify `julia --version` in setup steps.
- Add julia's bin directory to PATH, or symlink into /usr/local/bin.
- After extracting a julia tarball, chmod +x the binary — a missing execute bit also fails the probe.
- Keep the Julia install path stable; avoid relocating it without updating PATH or common_locations.
When it happens
Trigger: __init__ calls _setup_runtime_dependency; every path in common_locations fails either os.path.isfile() or os.access(location, os.X_OK), and no julia was found on PATH, so julia_path stays None and the RuntimeError is raised.
Common situations: Julia simply not installed; julia installed via snap/homebrew/conda in a location not in common_locations; julia downloaded as tarball and extracted but never added to PATH; binary exists but lacks the execute bit; container/CI images missing the runtime.
Related errors
- Could not find 'uvx' or 'uv' in PATH. Install uv (https://do
- Java {BSL_LS_MIN_JAVA_VERSION}+ is required for BSL Language
- MATLAB installation not found. Set the MATLAB_PATH environme
- MATLAB installation directory does not exist: {matlab_path}
- Node.js is not installed or isn't in PATH. Please install No
AI-assisted analysis of oraios/serena@7fcbca7e62 (2026-08-29).
Data as JSON: /api/errors/26a5e0372be19282.
Report an issue: GitHub.