You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
java.nio.file.InvalidPathException: Illegal char <"> at index 0: "C:\windows\system32\bash
at java.base/sun.nio.fs.WindowsPathParser.normalize(WindowsPathParser.java:177)
at java.base/sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:153)
at java.base/sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:77)
at java.base/sun.nio.fs.WindowsPath.parse(WindowsPath.java:92)
at java.base/sun.nio.fs.WindowsFileSystem.getPath(WindowsFileSystem.java:232)
at java.base/java.nio.file.Path.of(Path.java:147)
at ai.chat2db.community.jcef.terminal.TerminalSessionManager.findCommand(TerminalSessionManager.java:425)
at ai.chat2db.community.jcef.terminal.TerminalSessionManager.capabilities(TerminalSessionManager.java:179)
at ai.chat2db.community.jcef.handler.biz.GetTerminalCapabilitiesHandler.handle(GetTerminalCapabilitiesHandler.java:14)
at ai.chat2db.community.jcef.frame.MainJFrame$5.lambda$onQuery$0(MainJFrame.java:683)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:840)
Activity
auenger commentedon Sep 9, 2026
@jjnian 你好 我们明天更新以下版本 ,如果还有同样的问题 可以麻烦进行一下相关信息的检查
打开 Chat2DB:
如果菜单无法打开日志,请检查:
%USERPROFILE%.chat2db\chat2db-community\logs\application.log
把报错时间前后约 100 行发给我们。也可以在 PowerShell 中执行:
$log = "$env:USERPROFILE.chat2db\chat2db-community\logs\application.log"
Select-String -Path $log -Context 5,20 -Pattern `
'get-terminal-capabilities',
'InvalidPathException',
'Error processing request',
'GetTerminalCapabilitiesHandler',
'Java Query'
打开 PowerShell,执行:
$env:ComSpec
Test-Path -LiteralPath $env:ComSpec
Get-Command cmd.exe, powershell.exe, pwsh.exe, bash.exe `
-ErrorAction SilentlyContinue |
Select-Object Name, Source
把完整输出发给我们。
继续在 PowerShell 执行:
$i = 0
$env:Path -split ';' | ForEach-Object {
$entry = $_
$cleanEntry = $entry.Trim().Trim('"')
} | Format-Table -AutoSize -Wrap
特别需要保留输出中:
发送前可以遮盖用户名、公司名等敏感部分,但请保留双引号、分号和路径结构。
jjnian commentedon Sep 11, 2026
这是日志打印的log:
2026-09-11 15:39:31.051 ERROR 14272 --- [pool-1-thread-14] a.c.community.jcef.frame.MainJFrame .740 : | Error processing request [action: get-terminal-capabilities]: Illegal char <"> at index 0: "C:\windows\system32\bash
java.nio.file.InvalidPathException: Illegal char <"> at index 0: "C:\windows\system32\bash
at java.base/sun.nio.fs.WindowsPathParser.normalize(WindowsPathParser.java:177)
at java.base/sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:153)
at java.base/sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:77)
at java.base/sun.nio.fs.WindowsPath.parse(WindowsPath.java:92)
at java.base/sun.nio.fs.WindowsFileSystem.getPath(WindowsFileSystem.java:232)
at java.base/java.nio.file.Path.of(Path.java:147)
at ai.chat2db.community.jcef.terminal.TerminalSessionManager.findCommand(TerminalSessionManager.java:425)
at ai.chat2db.community.jcef.terminal.TerminalSessionManager.capabilities(TerminalSessionManager.java:179)
at ai.chat2db.community.jcef.handler.biz.GetTerminalCapabilitiesHandler.handle(GetTerminalCapabilitiesHandler.java:14)
at ai.chat2db.community.jcef.frame.MainJFrame$5.lambda$onQuery$0(MainJFrame.java:683)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:840)
auenger commentedon Sep 11, 2026
@jjnian
已经定位,原因很明确:用户的 Windows PATH 中有一个以双引号开头的路径条目,例如:
"C:\windows\system32
程序在这个目录后拼接 bash,形成:
"C:\windows\system32\bash
Java 认为 " 是 Windows 路径非法字符,于是抛出 InvalidPathException,导致整个 Shell 列表读取失败。
这不是 Bash 未安装导致的,而是 PATH 格式异常,同时也说明应用的 PATH 扫描逻辑容错不足。
让用户这样处理:
sysdm.cpl
高级 → 环境变量
"C:\windows\system32"
改成:
C:\Windows\System32
只删除双引号,不要删除 System32 这条路径。即使路径包含空格,Windows 的 PATH 条目通常也不需要双引号。
麻烦您先处理一下试试看, 后续版本 这个问题 我做一下兼容
fix(desktop): tolerate malformed Windows PATH entries
jjnian commentedon Sep 11, 2026
我刚看了 我的path里面的东西没有带引号的
auenger commentedon Sep 11, 2026
我来检查一下代码 ,逻辑健壮一点