如何在 windows 上使用 javac 的命令行参数文件?

How to use command-line argument files for javac on windows?

这是我的工作目录:

C:\GitHub\

在这个目录下我有:

class\ src\ cmain

cmain是我的参数文件。

我所有的.java源代码文件都在src\

main.java CalcHandler.java

下面是cmain

的内容
-cp .\class\
-sourcepath .\src\
-d .\class\
.\src\main.java

但是当我尝试使用 cmain 在 PowerShell 中编译 src\main.java 时,无法识别:

PS C:\GitHub> javac @cmain
Usage: javac <options> <source files>                                                                                   
where possible options include:                                                                                           
-g                         Generate all debugging info                                                                  
-g:none                    Generate no debugging info
....

我在 Linux 试过了,效果很好,内容完全一样。

我应该怎么做才能让它发挥作用?

编辑:显然这是PowerShell的错误,它在命令提示符下工作。但我仍然想听听您如何在 PowerShell 中使其正确。

javac '@cmain'

PowerShell 解析命令的参数,@cmain 表示获取数组 $cmain 并将其扩展为每个项目一个参数(splatting)。通过传递一个显式字符串,您可以绕过该自动化。

其他选项:

javac --% @cmain

这将告诉 PowerShell 在 --% 标记之后停止解析参数,并将它们逐字传递给其他程序。

javac `@cmain 

这将转义 @,因此它的特殊行为将不适用。

永远记住,如果您想将该语法传递给其他程序,shell 功能将需要解决方法。这与 %cmd 中扩展环境变量或大多数 shells 在空格和其他空格处标记化参数没有什么不同。一个仅打印其参数的小型实用程序可以派上用场来诊断此类情况。