You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取本地运行中REPL的nREPL端口号?

查找本地REPL运行端口的方法

一、Shell命令方式

Linux/macOS

  1. 直接查找Clojure进程关联的端口:
lsof -i -P -n | grep clojure

输出中LISTEN状态对应的数字就是REPL监听的端口(例如*:5555 (LISTEN)里的5555)。

  1. 若进程名不显示为clojure,可查找Java进程(Clojure基于JVM运行):
lsof -i -P -n | grep java

从结果里筛选LISTEN状态的端口,结合启动时间判断目标端口。

Windows(PowerShell)

  1. 查找Clojure进程的端口:
$clojureProc = Get-Process | Where-Object { $_.ProcessName -like "*clojure*" }
Get-NetTCPConnection | Where-Object { $_.OwningProcess -eq $clojureProc.Id } | Select-Object LocalPort
  1. 查找Java进程的监听端口:
Get-Process java | ForEach-Object { Get-NetTCPConnection -OwningProcess $_.Id } | Where-Object { $_.State -eq "Listen" } | Select-Object LocalPort

二、Clojure函数方式

如果能在REPL内部执行代码(比如VS Code仍可访问REPL),用以下方法:

针对Leiningen启动的nREPL

直接读取内置属性:

(System/getProperty "nrepl.port")

执行后直接返回端口号字符串。

通用JVM端口查询

通过JVM管理API获取启动参数中的端口:

(->> (java.lang.management.ManagementFactory/getRuntimeMXBean)
     .getInputArguments
     (filter #(re-find #"port=(\d+)" %))
     first
     (re-find #"port=(\d+)")
     second)

nREPL内部获取当前端口

如果当前在nREPL会话里,直接获取服务器实例的端口:

(-> @(resolve 'nrepl.server/*server*) :server-socket .getLocalPort)

内容的提问来源于stack exchange,提问作者Clarice Bouwer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 23:35:06