这是我的工作目录:
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中使其正确的信息。
答案 0 :(得分:1)
javac '@cmain'
PowerShell解析命令的参数,@cmain
表示获取数组$cmain
并将其扩展为每个项目一个参数(splatting)。通过传递显式字符串,您可以绕过该自动操作。
其他选择:
javac --% @cmain
这将告诉PowerShell停止在--%
标记之后解析参数,并将它们逐字传递给其他程序。
javac `@cmain
这将逃脱@
,因此其特殊行为将不适用。
如果要将该语法传递给其他程序,请始终记住shell功能需要解决方法。这与%
中cmd
扩展环境变量没有什么不同,或者大多数shell在空格和其他空格处标记参数。只打印其参数的小型实用程序可以派上用场来诊断此类案例。