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

时间:2018-06-09 17:55:36

标签: powershell command-line-arguments javac

这是我的工作目录:

C:\GitHub\

在这个目录下我有:

class\ src\ cmain

cmain是我的参数文件。

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

main.java CalcHandler.java

这是cmain

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

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

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中使其正确的信息。

1 个答案:

答案 0 :(得分:1)

javac '@cmain'

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

其他选择:

javac --% @cmain

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

javac `@cmain 

这将逃脱@,因此其特殊行为将不适用。

如果要将该语法传递给其他程序,请始终记住shell功能需要解决方法。这与%cmd扩展环境变量没有什么不同,或者大多数shell在空格和其他空格处标记参数。只打印其参数的小型实用程序可以派上用场来诊断此类案例。