Windows命令行使用d8批量编译*.class出现InvalidPathException如何解决
报错原因
该报错是Windows系统CMD的特性导致:CMD默认不会自动展开通配符*,会直接将*.class作为完整字符串传递给d8,而d8本身没有内置通配符解析逻辑,因此识别到非法字符*后抛出路径异常。
解决方案
你可以任选以下任意一种方式实现批量编译:
- 方案1:直接传入class所在目录
d8原生支持直接传入目录路径,会自动扫描目录下所有class文件,无需单独指定每个文件。如果class都存放在当前目录,直接执行:
如果class存放在指定的d8 ../build/classes目录,执行:d8 ./build/classes - 方案2:使用PowerShell执行命令
PowerShell默认支持通配符自动展开,直接在PowerShell中运行原有命令即可:d8 *.class - 方案3:在CMD中通过for循环拼接参数
如果必须使用CMD环境,可先通过for循环收集所有class文件路径再传给d8:
如果是写在bat脚本中使用,需要转义百分号:rem 直接在CMD窗口执行用以下命令 for %i in (*.class) do call set "class_list=%%class_list%% %i" d8 %class_list%for %%i in (*.class) do call set "class_list=%%class_list%% %%i" d8 %class_list%
内容的提问来源于stack exchange,提问作者Amin Guermazi
相关产品推荐
相关产品推荐

